Derive IKEv1 CHILD_SA keymat twice, once for each IPsec SA
[strongswan.git] / src / libcharon / sa / keymat_v1.h
index fb5a1b6..eb07e3a 100644 (file)
@@ -61,6 +61,8 @@ struct keymat_v1_t {
         *
         * @param proposal              selected algorithms
         * @param dh                    diffie hellman key, NULL if none used
+        * @param spi_i                 SPI chosen by initiatior
+        * @param spi_r                 SPI chosen by responder
         * @param nonce_i               quick mode initiator nonce
         * @param nonce_r               quick mode responder nonce
         * @param encr_i                allocated initiators encryption key
@@ -69,7 +71,8 @@ struct keymat_v1_t {
         * @param integ_r               allocated responders integrity key
         */
        bool (*derive_child_keys)(keymat_v1_t *this, proposal_t *proposal,
-                                               diffie_hellman_t *dh, chunk_t nonce_i, chunk_t nonce_r,
+                                               diffie_hellman_t *dh, u_int32_t spi_i, u_int32_t spi_r,
+                                               chunk_t nonce_i, chunk_t nonce_r,
                                                chunk_t *encr_i, chunk_t *integ_i,
                                                chunk_t *encr_r, chunk_t *integ_r);
 
@@ -89,6 +92,15 @@ struct keymat_v1_t {
                                                chunk_t sa_i, identification_t *id);
 
        /**
+        * Get HASH data for integrity/authentication in Phase 2 exchanges.
+        *
+        * @param message               message to generate the HASH data for
+        * @return                              allocated HASH data
+        */
+       chunk_t (*get_hash_phase2)(keymat_v1_t *this, message_t *message);
+
+
+       /**
         * Returns the IV for a message with the given message ID.
         *
         * @param mid                   message ID