Exemplo n.º 1
0
        //------------------------------------------------------
        //
        //  Internal Properties
        //
        //------------------------------------------------------
        /// <summary>
        /// Get certificate part - null if none
        /// </summary>
        internal CertificatePart GetCertificatePart()
        {
            // lazy init
            if (_certificatePart == null && !_alreadyLookedForCertPart)
            {
                PackageRelationshipCollection relationships = SignaturePart.GetRelationshipsByType(
                    CertificatePart.RelationshipType);
                foreach (PackageRelationship relationship in relationships)
                {
                    // don't resolve if external
                    if (relationship.TargetMode != TargetMode.Internal)
                    {
                        throw new FileFormatException(SR.Get(SRID.PackageSignatureCorruption));
                    }

                    Uri resolvedUri = PackUriHelper.ResolvePartUri(SignaturePart.Uri, relationship.TargetUri);

                    // don't create if it doesn't exist
                    if (!_manager.Package.PartExists(resolvedUri))
                    {
                        continue;
                    }

                    // find the cert
                    _certificatePart = new CertificatePart(_manager.Package, resolvedUri);
                    break;
                }
                _alreadyLookedForCertPart = true;
            }

            return(_certificatePart);
        }
Exemplo n.º 2
0
        public PackageRelationshipCollection GetRelationshipsByType(string relationshipType)
        {
            PackageRelationshipCollection collection = new PackageRelationshipCollection();

            foreach (PackageRelationship r in Relationships.Values)
            {
                if (r.RelationshipType == relationshipType)
                {
                    collection.Relationships.Add(r);
                }
            }

            return(collection);
        }