-
Notifications
You must be signed in to change notification settings - Fork 0
Crypto actions (crypto‐lib)
Boriss Melikjan edited this page Sep 9, 2025
·
1 revision
High-level support for encryption/decryption.
Ability to query for recipients from ldap.sk.ee.
Decryption needs ID-card.
val recipientRepository: RecipientRepository = RecipientRepositoryImpl(configurationRepository, certificateService)
// search by personal code
val recipients: List<Addressee> =
recipientRepository.find(context, "38102010020").first
// search by common name (CN), wildcards are automatically added
val recipients: List<Addressee> = recipientRepository.find(context, "ria").firstval containerPath = ContainerUtil.addCryptoContainer(context, files.first())
val container = CryptoContainer.openOrCreate(
context,
containerPath,
files,
cdoc2Settings,
forceCreate,
)
val dataFiles = container.dataFiles
val recipients = container.recipientstry {
val containerFile = File("path-to-container.cdoc")
val dataFiles: List<File> = listOf(...)
val recipients: List<Addressee> = listOf(...)
val cryptoContainer =
CryptoContainer.encrypt(
context = context,
file = containerFile,
dataFiles = dataFiles,
recipients = recipients,
cdoc2Settings = cdoc2Settings,
configurationRepository = configurationRepository,
)
} catch (_: DataFilesEmptyException) {
// no data files provided
} catch (_: RecipientsEmptyException) {
// no recipients provided
} catch (_: Exception) {
// something else failed
}val containerFile = File("path-to-container.cdoc")
val recipients: List<Addressee> = listOf(...)
val pin1Code: ByteArray = ...
val authCert =
card.certificate(CertificateType.AUTHENTICATION)
val smartToken: Token = ...
try {
val decryptedContainer =
CryptoContainer.decrypt(
context,
containerFile,
recipients,
authCert,
pin1Code,
smartToken,
cdoc2Settings,
configurationRepository,
)
if (pin1Code.isNotEmpty()) {
Arrays.fill(pin1Code, 0.toByte())
}
val dataFiles = container.dataFiles
} catch (ex: SmartCardReaderException) {
// provided TagLostException, PIN1 verification failed,
// ApduResponseException, PaceTunnelException
} catch (ex: Exception) {
// something else failed
}val token: Token =
withContext(Main) {
Token.create(smartCardReaderManager.connectedReader())
}
};val card = TokenWithPace.create(nfcReader)
};