aboutsummaryrefslogtreecommitdiffstats
path: root/libraries/spongycastle/pg/src/main/java/org/spongycastle/bcpg/OnePassSignaturePacket.java
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/spongycastle/pg/src/main/java/org/spongycastle/bcpg/OnePassSignaturePacket.java')
-rw-r--r--libraries/spongycastle/pg/src/main/java/org/spongycastle/bcpg/OnePassSignaturePacket.java115
1 files changed, 115 insertions, 0 deletions
diff --git a/libraries/spongycastle/pg/src/main/java/org/spongycastle/bcpg/OnePassSignaturePacket.java b/libraries/spongycastle/pg/src/main/java/org/spongycastle/bcpg/OnePassSignaturePacket.java
new file mode 100644
index 000000000..59d73160d
--- /dev/null
+++ b/libraries/spongycastle/pg/src/main/java/org/spongycastle/bcpg/OnePassSignaturePacket.java
@@ -0,0 +1,115 @@
+package org.spongycastle.bcpg;
+
+import java.io.*;
+
+/**
+ * generic signature object
+ */
+public class OnePassSignaturePacket
+ extends ContainedPacket
+{
+ private int version;
+ private int sigType;
+ private int hashAlgorithm;
+ private int keyAlgorithm;
+ private long keyID;
+ private int nested;
+
+ OnePassSignaturePacket(
+ BCPGInputStream in)
+ throws IOException
+ {
+ version = in.read();
+ sigType = in.read();
+ hashAlgorithm = in.read();
+ keyAlgorithm = in.read();
+
+ keyID |= (long)in.read() << 56;
+ keyID |= (long)in.read() << 48;
+ keyID |= (long)in.read() << 40;
+ keyID |= (long)in.read() << 32;
+ keyID |= (long)in.read() << 24;
+ keyID |= (long)in.read() << 16;
+ keyID |= (long)in.read() << 8;
+ keyID |= in.read();
+
+ nested = in.read();
+ }
+
+ public OnePassSignaturePacket(
+ int sigType,
+ int hashAlgorithm,
+ int keyAlgorithm,
+ long keyID,
+ boolean isNested)
+ {
+ this.version = 3;
+ this.sigType = sigType;
+ this.hashAlgorithm = hashAlgorithm;
+ this.keyAlgorithm = keyAlgorithm;
+ this.keyID = keyID;
+ this.nested = (isNested) ? 0 : 1;
+ }
+
+ /**
+ * Return the signature type.
+ * @return the signature type
+ */
+ public int getSignatureType()
+ {
+ return sigType;
+ }
+
+ /**
+ * return the encryption algorithm tag
+ */
+ public int getKeyAlgorithm()
+ {
+ return keyAlgorithm;
+ }
+
+ /**
+ * return the hashAlgorithm tag
+ */
+ public int getHashAlgorithm()
+ {
+ return hashAlgorithm;
+ }
+
+ /**
+ * @return long
+ */
+ public long getKeyID()
+ {
+ return keyID;
+ }
+
+ /**
+ *
+ */
+ public void encode(
+ BCPGOutputStream out)
+ throws IOException
+ {
+ ByteArrayOutputStream bOut = new ByteArrayOutputStream();
+ BCPGOutputStream pOut = new BCPGOutputStream(bOut);
+
+ pOut.write(version);
+ pOut.write(sigType);
+ pOut.write(hashAlgorithm);
+ pOut.write(keyAlgorithm);
+
+ pOut.write((byte)(keyID >> 56));
+ pOut.write((byte)(keyID >> 48));
+ pOut.write((byte)(keyID >> 40));
+ pOut.write((byte)(keyID >> 32));
+ pOut.write((byte)(keyID >> 24));
+ pOut.write((byte)(keyID >> 16));
+ pOut.write((byte)(keyID >> 8));
+ pOut.write((byte)(keyID));
+
+ pOut.write(nested);
+
+ out.writePacket(ONE_PASS_SIGNATURE, bOut.toByteArray(), true);
+ }
+}