public static AuthorityKeyIdentifier decode(byte[] encoding) throws IOException { AuthorityKeyIdentifier aki = (AuthorityKeyIdentifier) ASN1.decode(encoding); aki.encoding = encoding; return aki; }
/** * Returns ASN.1 encoded form of this X.509 CertificatePolicies value. */ @Override public byte[] getEncoded() { if (encoding == null) { encoding = ASN1.encode(this); } return encoding; }
public DerOutputStream(ASN1Type asn1, Object object) { content = object; index = -1; asn1.setEncodingContent(this); encoded = new byte[asn1.getEncodedLength(this)]; index = 0; asn1.encodeASN(this); }
@Override public void getExplicitLength(ASN1Explicit explicit) { Object[] values = new Object[1]; int[] compLens = new int[1]; values[0] = content; push(compLens, values); explicit.type.setEncodingContent(this); // in case if we get content bytes while getting its length // FIXME what about remove it: need redesign values[0] = content; compLens[0] = length; length = explicit.type.getEncodedLength(this); }
@Override public void encodeChoice(ASN1Choice choice) { ASN1Type type = (ASN1Type) val[index][0]; content = val[index][1]; index++; type.encodeASN(this); }
public void setEncodingContent(BerOutputStream out) { type.setEncodingContent(out); } }
@Override public int getEncodedLength(BerOutputStream out) { //FIXME name AttributeValue av = (AttributeValue) out.content; if (av.encoded != null) { return out.length; } else { return super.getEncodedLength(out); } } };
public void encodeContent(BerOutputStream out) { type.encodeContent(out); }
public DerOutputStream(ASN1Type asn1, Object object) { content = object; index = -1; asn1.setEncodingContent(this); encoded = new byte[asn1.getEncodedLength(this)]; index = 0; asn1.encodeASN(this); }
private void getValueOfLength(ASN1ValueCollection collection) { //FIXME what about another way? Object[] cv = collection.getValues(content).toArray(); Object[] values = new Object[cv.length]; int[] compLens = new int[values.length]; push(compLens, values); int seqLen = 0; for (int i = 0; i < values.length; i++) { content = cv[i]; collection.type.setEncodingContent(this); compLens[i] = length; // in case if we get content bytes while getting its length // FIXME what about remove it: need redesign values[i] = content; seqLen += collection.type.getEncodedLength(this); } length = seqLen; } }
@Override public void encodeExplicit(ASN1Explicit explicit) { content = val[index][0]; length = len[index][0]; index++; explicit.type.encodeASN(this); }
@Override public void getChoiceLength(ASN1Choice choice) { int i = choice.getIndex(content); content = choice.getObjectToEncode(content); Object[] values = new Object[] { choice.type[i], content }; push(null, values); choice.type[i].setEncodingContent(this); // in case if we get content bytes while getting its length // FIXME what about remove it: need redesign values[1] = content; }
@Override public int getEncodedLength(BerOutputStream out) { //FIXME name AttributeValue av = (AttributeValue) out.content; if (av.encoded != null) { return out.length; } else { return super.getEncodedLength(out); } } };
public DerOutputStream(ASN1Type asn1, Object object) { content = object; index = -1; asn1.setEncodingContent(this); encoded = new byte[asn1.getEncodedLength(this)]; index = 0; asn1.encodeASN(this); }
@Override public void getSequenceLength(ASN1Sequence sequence) { ASN1Type[] type = sequence.type; Object[] values = new Object[type.length]; int[] compLens = new int[type.length]; sequence.getValues(content, values); push(compLens, values); int seqLen = 0; for (int i = 0; i < type.length; i++) { // check optional types if (values[i] == null) { if (sequence.OPTIONAL[i]) { continue; } else { throw new RuntimeException();//FIXME type & message } } if (Objects.equal(sequence.DEFAULT[i], values[i])) { values[i] = null; continue; } content = values[i]; type[i].setEncodingContent(this); compLens[i] = length; // in case if we get content bytes while getting its length // FIXME what about remove it: need redesign values[i] = content; seqLen += type[i].getEncodedLength(this); } length = seqLen; }
@Override public byte[] getEncoded() { if (encoding == null) { encoding = ASN1.encode(keys); } return encoding; }
/** * Creates the extension object on the base of its encoded form. */ public static IssuingDistributionPoint decode(byte[] encoding) throws IOException { IssuingDistributionPoint idp = (IssuingDistributionPoint) ASN1.decode(encoding); idp.encoding = encoding; return idp; }
private void encodeValueCollection(ASN1ValueCollection collection) { Object[] values = val[index]; int[] compLens = len[index]; index++; for (int i = 0; i < values.length; i++) { content = values[i]; length = compLens[i]; collection.type.encodeASN(this); } }