public SignaturePermissions(PdfDictionary sigDict, SignaturePermissions previous)
{
if (previous != null) {
annotationsAllowed &= previous.AnnotationsAllowed;
fillInAllowed &= previous.FillInAllowed;
fieldLocks.AddRange(previous.FieldLocks);
}
PdfArray reference = sigDict.GetAsArray(PdfName.REFERENCE);
if (reference != null) {
for (int i = 0; i < reference.Size; i++) {
PdfDictionary dict = reference.GetAsDict(i);
PdfDictionary parameters = dict.GetAsDict(PdfName.TRANSFORMPARAMS);
if (PdfName.DOCMDP.Equals(dict.GetAsName(PdfName.TRANSFORMMETHOD)))
certification = true;
PdfName action = parameters.GetAsName(PdfName.ACTION);
if (action != null)
fieldLocks.Add(new FieldLock(action, parameters.GetAsArray(PdfName.FIELDS)));
PdfNumber p = parameters.GetAsNumber(PdfName.P);
if (p == null)
continue;
switch (p.IntValue) {
case 1:
fillInAllowed = false;
break;
case 2:
annotationsAllowed = false;
break;
}
}
}
}