//------------------------------------------------------ // // 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); }
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); }