diff options
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.java | 98 |
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; + } +} |