Since it's not possible to identify encryption status and level using native LotusScript/Java classes here is a way to do that. The solution is based on Notes CAPI (within LotusScript) but it works for both Linux/Windows environment.
I will omit NSFDbOpen and NSFDbClose since it's easy to find out and focus instead on the main function: NSFDbLocalSecInfoGetLocal.
Declaration
Const NNOTES ="nnotes.dll"
Const LIBNOTES ="libnotes.so"
Declare Public Function WIN_NSFDbLocalSecInfoGetLocal Lib NNOTES Alias "NSFDbLocalSecInfoGetLocal"(ByVal hDb As Long, state As Long, strength As Long) As Integer
Declare Public Function LIN_NSFDbLocalSecInfoGetLocal Lib LIBNOTES Alias "NSFDbLocalSecInfoGetLocal"(ByVal hDb As Long, state As Long, strength As Long) As integer
Function check encryption status
public Function NSFDbLocalSecInfoGetLocal(hDB As Long, state As Long, strength As long) As Integer
If isDefined("WINDOWS") Then
NSFDbLocalSecInfoGetLocal = WIN_NSFDbLocalSecInfoGetLocal(hDb, state, strength)
ElseIf isDefined("LINUX") Then
NSFDbLocalSecInfoGetLocal = LIN_NSFDbLocalSecInfoGetLocal(hDb, state, strength)
End If
End Function
Example how to use it
Private Function calcEncryption(database As NotesDatabase, doc As notesdocument)
Dim sDb As String
Dim hDb As Long
Dim state As Long
Dim encrypt As Long
Dim rc As Integer
sDb = database.server & "!!" & database.filepath
rc = NSFDbOpen(sDb, hDb)
If rc <> 0 Then Exit function
rc = NSFDbLocalSecInfoGetLocal(hDB, state, encrypt)
If rc <> 0 Then
Error 9001, "Impossible to read encryption. Error code: " & CStr(rc)
End If
rc = NSFDbClose(hDb)
End Function
- state: 0 (not encrypted), 1 (encrypted) or 2 (will be encrypted after compact)
- encrypt: 1 (easy), 2 (middle), 3 (strong)
No comments :
Post a Comment