1 package org.bouncycastle.asn1.cmc; 2 3 import org.bouncycastle.asn1.ASN1EncodableVector; 4 import org.bouncycastle.asn1.ASN1Object; 5 import org.bouncycastle.asn1.ASN1OctetString; 6 import org.bouncycastle.asn1.ASN1Primitive; 7 import org.bouncycastle.asn1.ASN1Sequence; 8 import org.bouncycastle.asn1.DEROctetString; 9 import org.bouncycastle.asn1.DERSequence; 10 import org.bouncycastle.asn1.x509.AlgorithmIdentifier; 11 import org.bouncycastle.util.Arrays; 12 13 /** 14 * <pre> 15 * id-cmc-popLinkWitnessV2 OBJECT IDENTIFIER ::= { id-cmc 33 } 16 * PopLinkWitnessV2 ::= SEQUENCE { 17 * keyGenAlgorithm AlgorithmIdentifier, 18 * macAlgorithm AlgorithmIdentifier, 19 * witness OCTET STRING 20 * } 21 * </pre> 22 */ 23 public class PopLinkWitnessV2 24 extends ASN1Object 25 { 26 private final AlgorithmIdentifier keyGenAlgorithm; 27 private final AlgorithmIdentifier macAlgorithm; 28 private final byte[] witness; 29 PopLinkWitnessV2(AlgorithmIdentifier keyGenAlgorithm, AlgorithmIdentifier macAlgorithm, byte[] witness)30 public PopLinkWitnessV2(AlgorithmIdentifier keyGenAlgorithm, AlgorithmIdentifier macAlgorithm, byte[] witness) 31 { 32 this.keyGenAlgorithm = keyGenAlgorithm; 33 this.macAlgorithm = macAlgorithm; 34 this.witness = Arrays.clone(witness); 35 } 36 PopLinkWitnessV2(ASN1Sequence seq)37 private PopLinkWitnessV2(ASN1Sequence seq) 38 { 39 if (seq.size() != 3) 40 { 41 throw new IllegalArgumentException("incorrect sequence size"); 42 } 43 this.keyGenAlgorithm = AlgorithmIdentifier.getInstance(seq.getObjectAt(0)); 44 this.macAlgorithm = AlgorithmIdentifier.getInstance(seq.getObjectAt(1)); 45 this.witness = Arrays.clone(ASN1OctetString.getInstance(seq.getObjectAt(2)).getOctets()); 46 } 47 getInstance(Object o)48 public static PopLinkWitnessV2 getInstance(Object o) 49 { 50 if (o instanceof PopLinkWitnessV2) 51 { 52 return (PopLinkWitnessV2)o; 53 } 54 55 if (o != null) 56 { 57 return new PopLinkWitnessV2(ASN1Sequence.getInstance(o)); 58 } 59 60 return null; 61 } 62 getKeyGenAlgorithm()63 public AlgorithmIdentifier getKeyGenAlgorithm() 64 { 65 return keyGenAlgorithm; 66 } 67 getMacAlgorithm()68 public AlgorithmIdentifier getMacAlgorithm() 69 { 70 return macAlgorithm; 71 } 72 getWitness()73 public byte[] getWitness() 74 { 75 return Arrays.clone(witness); 76 } 77 toASN1Primitive()78 public ASN1Primitive toASN1Primitive() 79 { 80 ASN1EncodableVector v = new ASN1EncodableVector(3); 81 82 v.add(keyGenAlgorithm); 83 v.add(macAlgorithm); 84 v.add(new DEROctetString(getWitness())); 85 86 return new DERSequence(v); 87 } 88 } 89