
com.braintree.org.bouncycastle.asn1.DEROutputStream Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of encryption Show documentation
Show all versions of encryption Show documentation
Client side encryption for Braintree integrations on Android.
package com.braintree.org.bouncycastle.asn1;
import java.io.FilterOutputStream;
import java.io.IOException;
import java.io.OutputStream;
public class DEROutputStream
extends FilterOutputStream implements DERTags
{
public DEROutputStream(
OutputStream os)
{
super(os);
}
private void writeLength(
int length)
throws IOException
{
if (length > 127)
{
int size = 1;
int val = length;
while ((val >>>= 8) != 0)
{
size++;
}
write((byte)(size | 0x80));
for (int i = (size - 1) * 8; i >= 0; i -= 8)
{
write((byte)(length >> i));
}
}
else
{
write((byte)length);
}
}
void writeEncoded(
int tag,
byte[] bytes)
throws IOException
{
write(tag);
writeLength(bytes.length);
write(bytes);
}
void writeTag(int flags, int tagNo)
throws IOException
{
if (tagNo < 31)
{
write(flags | tagNo);
}
else
{
write(flags | 0x1f);
if (tagNo < 128)
{
write(tagNo);
}
else
{
byte[] stack = new byte[5];
int pos = stack.length;
stack[--pos] = (byte)(tagNo & 0x7F);
do
{
tagNo >>= 7;
stack[--pos] = (byte)(tagNo & 0x7F | 0x80);
}
while (tagNo > 127);
write(stack, pos, stack.length - pos);
}
}
}
void writeEncoded(int flags, int tagNo, byte[] bytes)
throws IOException
{
writeTag(flags, tagNo);
writeLength(bytes.length);
write(bytes);
}
protected void writeNull()
throws IOException
{
write(NULL);
write(0x00);
}
public void write(byte[] buf)
throws IOException
{
out.write(buf, 0, buf.length);
}
public void write(byte[] buf, int offSet, int len)
throws IOException
{
out.write(buf, offSet, len);
}
public void writeObject(
Object obj)
throws IOException
{
if (obj == null)
{
writeNull();
}
else if (obj instanceof DERObject)
{
((DERObject)obj).encode(this);
}
else if (obj instanceof DEREncodable)
{
((DEREncodable)obj).getDERObject().encode(this);
}
else
{
throw new IOException("object not DEREncodable");
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy