public virtual void ToSignaturePolicyIdentifierTest()
        {
            SignaturePolicyIdentifier actual = new SignaturePolicyInfo(POLICY_IDENTIFIER, POLICY_HASH, POLICY_DIGEST_ALGORITHM
                                                                       , POLICY_URI).ToSignaturePolicyIdentifier();
            DerIA5String           deria5String           = new DerIA5String(POLICY_URI);
            SigPolicyQualifierInfo sigPolicyQualifierInfo = new SigPolicyQualifierInfo(Org.BouncyCastle.Asn1.Pkcs.PkcsObjectIdentifiers.IdSpqEtsUri
                                                                                       , deria5String);
            DerOctetString       derOctetString           = new DerOctetString(POLICY_HASH);
            String               algId                    = DigestAlgorithms.GetAllowedDigest(POLICY_DIGEST_ALGORITHM);
            DerObjectIdentifier  asn1ObjectIdentifier     = new DerObjectIdentifier(algId);
            AlgorithmIdentifier  algorithmIdentifier      = new AlgorithmIdentifier(asn1ObjectIdentifier);
            OtherHashAlgAndValue otherHashAlgAndValue     = new OtherHashAlgAndValue(algorithmIdentifier, derOctetString);
            DerObjectIdentifier  objectIdentifier         = new DerObjectIdentifier(POLICY_IDENTIFIER);
            DerObjectIdentifier  objectIdentifierInstance = DerObjectIdentifier.GetInstance(objectIdentifier);
            SignaturePolicyId    signaturePolicyId        = new SignaturePolicyId(objectIdentifierInstance, otherHashAlgAndValue
                                                                                  , SignUtils.CreateSigPolicyQualifiers(sigPolicyQualifierInfo));
            SignaturePolicyIdentifier expected = new SignaturePolicyIdentifier(signaturePolicyId);

            NUnit.Framework.Assert.AreEqual(expected.ToAsn1Object(), actual.ToAsn1Object());
        }
        internal virtual SignaturePolicyIdentifier ToSignaturePolicyIdentifier()
        {
            String algId = DigestAlgorithms.GetAllowedDigest(this.policyDigestAlgorithm);

            if (algId == null || algId.Length == 0)
            {
                throw new ArgumentException("Invalid policy hash algorithm");
            }
            SignaturePolicyIdentifier signaturePolicyIdentifier = null;
            SigPolicyQualifierInfo    spqi = null;

            if (this.policyUri != null && this.policyUri.Length > 0)
            {
                spqi = new SigPolicyQualifierInfo(Org.BouncyCastle.Asn1.Pkcs.PkcsObjectIdentifiers.IdSpqEtsUri, new DerIA5String
                                                      (this.policyUri));
            }
            signaturePolicyIdentifier = new SignaturePolicyIdentifier(new SignaturePolicyId(DerObjectIdentifier.GetInstance
                                                                                                (new DerObjectIdentifier(this.policyIdentifier.Replace("urn:oid:", ""))), new OtherHashAlgAndValue(new
                                                                                                                                                                                                   AlgorithmIdentifier(new DerObjectIdentifier(algId)), new DerOctetString(this.policyHash)), SignUtils.CreateSigPolicyQualifiers
                                                                                                (spqi)));
            return(signaturePolicyIdentifier);
        }