001package org.apache.commons.ssl.org.bouncycastle.asn1.cryptopro; 002 003import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1EncodableVector; 004import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Object; 005import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1ObjectIdentifier; 006import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Primitive; 007import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Sequence; 008import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1TaggedObject; 009import org.apache.commons.ssl.org.bouncycastle.asn1.DERSequence; 010 011public class GOST3410PublicKeyAlgParameters 012 extends ASN1Object 013{ 014 private ASN1ObjectIdentifier publicKeyParamSet; 015 private ASN1ObjectIdentifier digestParamSet; 016 private ASN1ObjectIdentifier encryptionParamSet; 017 018 public static GOST3410PublicKeyAlgParameters getInstance( 019 ASN1TaggedObject obj, 020 boolean explicit) 021 { 022 return getInstance(ASN1Sequence.getInstance(obj, explicit)); 023 } 024 025 public static GOST3410PublicKeyAlgParameters getInstance( 026 Object obj) 027 { 028 if (obj instanceof GOST3410PublicKeyAlgParameters) 029 { 030 return (GOST3410PublicKeyAlgParameters)obj; 031 } 032 033 if(obj != null) 034 { 035 return new GOST3410PublicKeyAlgParameters(ASN1Sequence.getInstance(obj)); 036 } 037 038 return null; 039 } 040 041 public GOST3410PublicKeyAlgParameters( 042 ASN1ObjectIdentifier publicKeyParamSet, 043 ASN1ObjectIdentifier digestParamSet) 044 { 045 this.publicKeyParamSet = publicKeyParamSet; 046 this.digestParamSet = digestParamSet; 047 this.encryptionParamSet = null; 048 } 049 050 public GOST3410PublicKeyAlgParameters( 051 ASN1ObjectIdentifier publicKeyParamSet, 052 ASN1ObjectIdentifier digestParamSet, 053 ASN1ObjectIdentifier encryptionParamSet) 054 { 055 this.publicKeyParamSet = publicKeyParamSet; 056 this.digestParamSet = digestParamSet; 057 this.encryptionParamSet = encryptionParamSet; 058 } 059 060 /** 061 * @deprecated use getInstance() 062 */ 063 public GOST3410PublicKeyAlgParameters( 064 ASN1Sequence seq) 065 { 066 this.publicKeyParamSet = (ASN1ObjectIdentifier)seq.getObjectAt(0); 067 this.digestParamSet = (ASN1ObjectIdentifier)seq.getObjectAt(1); 068 069 if (seq.size() > 2) 070 { 071 this.encryptionParamSet = (ASN1ObjectIdentifier)seq.getObjectAt(2); 072 } 073 } 074 075 public ASN1ObjectIdentifier getPublicKeyParamSet() 076 { 077 return publicKeyParamSet; 078 } 079 080 public ASN1ObjectIdentifier getDigestParamSet() 081 { 082 return digestParamSet; 083 } 084 085 public ASN1ObjectIdentifier getEncryptionParamSet() 086 { 087 return encryptionParamSet; 088 } 089 090 public ASN1Primitive toASN1Primitive() 091 { 092 ASN1EncodableVector v = new ASN1EncodableVector(); 093 094 v.add(publicKeyParamSet); 095 v.add(digestParamSet); 096 097 if (encryptionParamSet != null) 098 { 099 v.add(encryptionParamSet); 100 } 101 102 return new DERSequence(v); 103 } 104}