|
65 | 65 | * new shared secret and key encapsulation message. |
66 | 66 | * <p> |
67 | 67 | * |
68 | | - * Example: |
| 68 | + * Example operation using a ficticious {@code KEM} algorithm {@code ABC}: |
69 | 69 | * {@snippet lang = java: |
70 | | - * // Receiver side |
71 | | - * var kpg = KeyPairGenerator.getInstance("X25519"); |
72 | | - * var kp = kpg.generateKeyPair(); |
| 70 | + * // Receiver side |
| 71 | + * KeyPairGenerator g = KeyPairGenerator.getInstance("ABC"); |
| 72 | + * KeyPair kp = g.generateKeyPair(); |
| 73 | + * publishKey(kp.getPublic()); |
73 | 74 | * |
74 | | - * // Sender side |
75 | | - * var kem1 = KEM.getInstance("DHKEM"); |
76 | | - * var sender = kem1.newEncapsulator(kp.getPublic()); |
77 | | - * var encapsulated = sender.encapsulate(); |
78 | | - * var k1 = encapsulated.key(); |
| 75 | + * // Sender side |
| 76 | + * KEM senderKEM = KEM.getInstance("ABC"); |
| 77 | + * PublicKey receiverPublicKey = retrieveKey(); |
| 78 | + * ABCKEMParameterSpec senderSpec = new ABCKEMParameterSpec(args); |
| 79 | + * KEM.Encapsulator e = senderKEM.newEncapsulator( |
| 80 | + * receiverPublicKey, senderSpec, null); |
| 81 | + * KEM.Encapsulated enc = e.encapsulate(); |
| 82 | + * SecretKey senderSecret = enc.key(); |
79 | 83 | * |
80 | | - * // Receiver side |
81 | | - * var kem2 = KEM.getInstance("DHKEM"); |
82 | | - * var receiver = kem2.newDecapsulator(kp.getPrivate()); |
83 | | - * var k2 = receiver.decapsulate(encapsulated.encapsulation()); |
| 84 | + * sendBytes(enc.encapsulation()); |
| 85 | + * sendBytes(enc.params()); |
84 | 86 | * |
85 | | - * assert Arrays.equals(k1.getEncoded(), k2.getEncoded()); |
| 87 | + * // Receiver side |
| 88 | + * byte[] ciphertext = receiveBytes(); |
| 89 | + * byte[] params = receiveBytes(); |
| 90 | + * |
| 91 | + * KEM receiverKEM = KEM.getInstance("ABC"); |
| 92 | + * AlgorithmParameters algParams = |
| 93 | + * AlgorithmParameters.getInstance("ABC"); |
| 94 | + * algParams.init(params); |
| 95 | + * ABCKEMParameterSpec receiverSpec = |
| 96 | + * algParams.getParameterSpec(ABCKEMParameterSpec.class); |
| 97 | + * KEM.Decapsulator d = |
| 98 | + * receiverKEM.newDecapsulator(kp.getPrivate(), receiverSpec); |
| 99 | + * SecretKey receiverSecret = d.decapsulate(ciphertext); |
| 100 | + * |
| 101 | + * // senderSecret and receiverSecret should now be equal. |
86 | 102 | * } |
87 | 103 | * |
88 | 104 | * @since 21 |
|
0 commit comments