Чтобы защитить финансовую информацию от всёумеющего администратора, клиент захотел иметь возможность её encrypt и decrypt on demand.
Написали простой код, который:
- запускается в Frontend
- помечает нужные поля как IsEncrypted
- устанавливает поля ключей SecretEncryptionKeys и PublicEncryptionKeys,
- вызывает метод notesdocument.encrypt
- сохраняет документ
Обратное (расшифровка) достигается удалением флага IsEncrypted с зашифрованных полей, удалением полей PublicEncryptionKeys, SecretEncryptionKeys ,$SealData, $Seal из документа и сохранением документа.
Все работает, если в соответствующих полях нету атачментов. Документ с атачментом шифруется без видимых проблем, но после расшифровки содержимое поля хоть и видно - картинка атачмента находится на своем месте, но открыть атачмент не получается. Сообщение на приатаченной к посту JPG: "Вы должны указать ключ для расшифровки, чтобы экспортировать этот атачмент. Сохранение файла в <путь> невозможно"
Была предпринята попытка расшифровать документ другим путём, а именно вызвать NotesDocument.encrypt предвалително убрав флаг isEncrypted с поля с атачментом. Все проходит без видимых ошибок, документ шифруется, пользователь_ чьего имени нету в поле PublicEncryptionKeys, видит при открытии документа предупреждение о том, что часть полей для него будут недоступны, содержимое поля с атачментом видно (иконка атачмента на своём месте), но при попытке открыть атачмент появляется тоже самое сообщение об ошибке.
Подскажите, плиз, как решить траблу.
P.S.
Способ декодирования
Dim ws As New NotesUIWorkspace
Dim uidoc As notesuidocument
Set uidoc=ws.EditDocument(True,pDoc)