aboutsummaryrefslogtreecommitdiffstats
path: root/libraries/spongycastle/jce/src/main/java/javax/crypto/spec/PSource.java
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/spongycastle/jce/src/main/java/javax/crypto/spec/PSource.java')
-rw-r--r--libraries/spongycastle/jce/src/main/java/javax/crypto/spec/PSource.java98
1 files changed, 98 insertions, 0 deletions
diff --git a/libraries/spongycastle/jce/src/main/java/javax/crypto/spec/PSource.java b/libraries/spongycastle/jce/src/main/java/javax/crypto/spec/PSource.java
new file mode 100644
index 000000000..03016e1f2
--- /dev/null
+++ b/libraries/spongycastle/jce/src/main/java/javax/crypto/spec/PSource.java
@@ -0,0 +1,98 @@
+package javax.crypto.spec;
+
+/**
+ * This class specifies the source for encoding input P in OAEP Padding, as
+ * defined in the {@link http://www.ietf.org/rfc/rfc3447.txt PKCS #1} standard.
+ *
+ * <pre>
+ *
+ * PKCS1PSourceAlgorithms ALGORITHM-IDENTIFIER ::= {
+ * { OID id-pSpecified PARAMETERS OCTET STRING },
+ * ... -- Allows for future expansion --
+ * }
+ * </pre>
+ */
+public class PSource
+{
+ /**
+ * This class is used to explicitly specify the value for encoding input P
+ * in OAEP Padding.
+ *
+ */
+ public final static class PSpecified
+ extends PSource
+ {
+ private byte[] p;
+
+ /**
+ * The encoding input P whose value equals byte[0].
+ */
+ public static final PSpecified DEFAULT = new PSpecified(new byte[0]);
+
+ /**
+ * Constructs the source explicitly with the specified value p as the
+ * encoding input P.
+ *
+ * @param p the value of the encoding input. The contents of the array
+ * are copied to protect against subsequent modification.
+ * @throws NullPointerException if p is null.
+ */
+ public PSpecified(byte[] p)
+ {
+ super("PSpecified");
+ if (p == null)
+ {
+ throw new NullPointerException("The encoding input is null");
+ }
+ this.p = copyOf(p);
+ }
+
+ /**
+ * Returns the value of encoding input P.
+ *
+ * @return the value of encoding input P. A new array is returned each
+ * time this method is called.
+ */
+ public byte[] getValue()
+ {
+ return copyOf(p);
+ }
+
+ private byte[] copyOf(byte[] b)
+ {
+ byte[] tmp = new byte[b.length];
+
+ System.arraycopy(b, 0, tmp, 0, b.length);
+
+ return tmp;
+ }
+ }
+
+ private String pSrcName;
+
+ /**
+ * Constructs a source of the encoding input P for OAEP padding as defined
+ * in the PKCS #1 standard using the specified PSource algorithm.
+ *
+ * @param pSrcName the algorithm for the source of the encoding input P.
+ * @throws NullPointerException if pSrcName is null.
+ */
+ protected PSource(String pSrcName)
+ {
+ if (pSrcName == null)
+ {
+ throw new NullPointerException("pSrcName is null");
+ }
+ this.pSrcName = pSrcName;
+ }
+
+ /**
+ * Returns the PSource algorithm name.
+ *
+ * @return the PSource algorithm name.
+ */
+ public String getAlgorithm()
+ {
+ return pSrcName;
+ }
+}