diff options
Diffstat (limited to 'libraries/spongycastle/pkix/src/main/java/org/spongycastle/cms/KEKRecipientId.java')
-rw-r--r-- | libraries/spongycastle/pkix/src/main/java/org/spongycastle/cms/KEKRecipientId.java | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/libraries/spongycastle/pkix/src/main/java/org/spongycastle/cms/KEKRecipientId.java b/libraries/spongycastle/pkix/src/main/java/org/spongycastle/cms/KEKRecipientId.java new file mode 100644 index 000000000..2025c7c16 --- /dev/null +++ b/libraries/spongycastle/pkix/src/main/java/org/spongycastle/cms/KEKRecipientId.java @@ -0,0 +1,63 @@ +package org.spongycastle.cms; + +import org.spongycastle.util.Arrays; + +public class KEKRecipientId + extends RecipientId +{ + private byte[] keyIdentifier; + + /** + * Construct a recipient ID with the key identifier of a KEK recipient. + * + * @param keyIdentifier a subjectKeyId + */ + public KEKRecipientId(byte[] keyIdentifier) + { + super(kek); + + this.keyIdentifier = keyIdentifier; + } + + public int hashCode() + { + return Arrays.hashCode(keyIdentifier); + } + + public boolean equals( + Object o) + { + if (!(o instanceof KEKRecipientId)) + { + return false; + } + + KEKRecipientId id = (KEKRecipientId)o; + + return Arrays.areEqual(keyIdentifier, id.keyIdentifier); + } + + public byte[] getKeyIdentifier() + { + return Arrays.clone(keyIdentifier); + } + + public Object clone() + { + return new KEKRecipientId(keyIdentifier); + } + + public boolean match(Object obj) + { + if (obj instanceof byte[]) + { + return Arrays.areEqual(keyIdentifier, (byte[])obj); + } + else if (obj instanceof KEKRecipientInformation) + { + return ((KEKRecipientInformation)obj).getRID().equals(this); + } + + return false; + } +} |