Skip to content

Commit dfcf0bf

Browse files
authored
Update README.md
1 parent 6e4e596 commit dfcf0bf

File tree

1 file changed

+92
-2
lines changed

1 file changed

+92
-2
lines changed

README.md

Lines changed: 92 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,6 @@ public class PKCS11Example {
123123

124124
This example initializes the PKCS11 library, opens a session, and provides a menu-driven interface for various PKCS#11 operations.
125125

126-
### Detailed Examples
127126

128127
### Detailed Examples
129128

@@ -282,7 +281,98 @@ The project is structured into several key components:
282281

283282
### Class Diagrams
284283

285-
(Insert class diagram here)
284+
```mermaid
285+
classDiagram
286+
class PKCS11Manager {
287+
-Pkcs11 pkcs11
288+
-Path libraryPath
289+
-String pin
290+
+PKCS11Manager(Path libraryPath, String pin)
291+
+openSession(int slotId): PKCS11Session
292+
+getPKCS11Token(): Pkcs11SignatureToken
293+
+close()
294+
}
295+
class PKCS11Session {
296+
-Pkcs11 pkcs11
297+
-NativeLong session
298+
-String pin
299+
+PKCS11Session(Pkcs11 pkcs11, String pin, int slotId)
300+
+resetSession()
301+
+logout()
302+
+close()
303+
}
304+
class PKCS11Initializer {
305+
+initializePkcs11(Path libraryPath): Pkcs11
306+
}
307+
class PKCS11Crypto {
308+
-initCrypto(Pkcs11 pkcs11, NativeLong session, NativeLong privateKeyHandle)
309+
+encryptData(byte[] dataToEncrypt, X509Certificate certificate): byte[]
310+
+decryptData(Pkcs11 pkcs11, NativeLong session, NativeLong privateKeyHandle, byte[] encryptedData): byte[]
311+
-decrypt(Pkcs11 pkcs11, NativeLong session, byte[] encryptedData): byte[]
312+
}
313+
class PKCS11Signer {
314+
-initSigning(Pkcs11 pkcs11, NativeLong session, NativeLong privateKeyHandle)
315+
+signMessage(Pkcs11 pkcs11, NativeLong session, NativeLong privateKeyHandle, byte[] message): byte[]
316+
+verifySignature(byte[] message, byte[] signature, X509Certificate certificate): boolean
317+
-sign(Pkcs11 pkcs11, NativeLong session, byte[] message): byte[]
318+
}
319+
class PKCS11Utils {
320+
+findPrivateKeysAndCertificates(Pkcs11 pkcs11, NativeLong session): List<KeyCertificatePair>
321+
+listSupportedAlgorithms(Pkcs11 pkcs11, NativeLong session, int slotID): List<SupportedAlgorithm>
322+
-findAllCertificates(Pkcs11 pkcs11, NativeLong session): Map<String, NativeLong>
323+
-findAllPrivateKeys(Pkcs11 pkcs11, NativeLong session): Map<String, NativeLong>
324+
-getCKA_ID(Pkcs11 pkcs11, NativeLong session, NativeLong objectHandle): String
325+
-getCertificate(Pkcs11 pkcs11, NativeLong session, NativeLong certHandle): X509Certificate
326+
-bytesToHex(byte[] bytes): String
327+
-getMechanismList(Pkcs11 pkcs11, NativeLong slotID): NativeLong[]
328+
-getMechanismName(long mechanismCode): String
329+
-getAlgorithmType(CK_MECHANISM_INFO mechanismInfo): SupportedAlgorithm.AlgorithmType
330+
}
331+
class KeyCertificatePair {
332+
-NativeLong keyHandle
333+
-X509Certificate certificate
334+
-String ckaId
335+
-CertificateInfo certificateInfo
336+
}
337+
class CertificateInfo {
338+
-String subject
339+
-String issuer
340+
-BigInteger serialNumber
341+
-byte[] signature
342+
-Date notBefore
343+
-Date notAfter
344+
-String sigAlgName
345+
-String sigAlgOID
346+
-byte[] tbsCertificate
347+
-int version
348+
-PublicKey publicKey
349+
-boolean[] issuerUniqueID
350+
-boolean[] subjectUniqueID
351+
-boolean[] keyUsage
352+
-List<String> extendedKeyUsage
353+
-int basicConstraints
354+
-Collection<List<?>> subjectAlternativeNames
355+
-Collection<List<?>> issuerAlternativeNames
356+
-byte[] encoded
357+
}
358+
class SupportedAlgorithm {
359+
-String name
360+
-String code
361+
-AlgorithmType type
362+
+enum AlgorithmType
363+
}
364+
365+
PKCS11Manager --> PKCS11Initializer : uses
366+
PKCS11Manager --> PKCS11Session : creates
367+
PKCS11Manager --> Pkcs11 : manages
368+
PKCS11Session --> Pkcs11 : uses
369+
PKCS11Crypto --> Pkcs11 : uses
370+
PKCS11Signer --> Pkcs11 : uses
371+
PKCS11Utils --> Pkcs11 : uses
372+
PKCS11Utils --> KeyCertificatePair : creates
373+
PKCS11Utils --> SupportedAlgorithm : creates
374+
KeyCertificatePair --> CertificateInfo : contains
375+
KeyCertificatePair --> X509Certificate : contains
286376
287377
### Sequence Diagrams
288378

0 commit comments

Comments
 (0)