Go to the documentation of this file.
32 #define TRACE_LEVEL ESP_TRACE_LEVEL
44 #if (ESP_SUPPORT == ENABLED)
51 static const IkeEncAlgo espSupportedEncAlgos[] =
53 #if (ESP_CHACHA20_POLY1305_SUPPORT == ENABLED)
56 #if (ESP_AES_128_SUPPORT == ENABLED && ESP_GCM_16_SUPPORT == ENABLED)
59 #if (ESP_AES_192_SUPPORT == ENABLED && ESP_GCM_16_SUPPORT == ENABLED)
62 #if (ESP_AES_256_SUPPORT == ENABLED && ESP_GCM_16_SUPPORT == ENABLED)
65 #if (ESP_AES_128_SUPPORT == ENABLED && ESP_GCM_12_SUPPORT == ENABLED)
68 #if (ESP_AES_192_SUPPORT == ENABLED && ESP_GCM_12_SUPPORT == ENABLED)
71 #if (ESP_AES_256_SUPPORT == ENABLED && ESP_GCM_12_SUPPORT == ENABLED)
74 #if (ESP_AES_128_SUPPORT == ENABLED && ESP_GCM_8_SUPPORT == ENABLED)
77 #if (ESP_AES_192_SUPPORT == ENABLED && ESP_GCM_8_SUPPORT == ENABLED)
80 #if (ESP_AES_256_SUPPORT == ENABLED && ESP_GCM_8_SUPPORT == ENABLED)
83 #if (ESP_AES_128_SUPPORT == ENABLED && ESP_CCM_16_SUPPORT == ENABLED)
86 #if (ESP_AES_192_SUPPORT == ENABLED && ESP_CCM_16_SUPPORT == ENABLED)
89 #if (ESP_AES_256_SUPPORT == ENABLED && ESP_CCM_16_SUPPORT == ENABLED)
92 #if (ESP_AES_128_SUPPORT == ENABLED && ESP_CCM_12_SUPPORT == ENABLED)
95 #if (ESP_AES_192_SUPPORT == ENABLED && ESP_CCM_12_SUPPORT == ENABLED)
98 #if (ESP_AES_256_SUPPORT == ENABLED && ESP_CCM_12_SUPPORT == ENABLED)
101 #if (ESP_AES_128_SUPPORT == ENABLED && ESP_CCM_8_SUPPORT == ENABLED)
104 #if (ESP_AES_192_SUPPORT == ENABLED && ESP_CCM_8_SUPPORT == ENABLED)
107 #if (ESP_AES_256_SUPPORT == ENABLED && ESP_CCM_8_SUPPORT == ENABLED)
110 #if (ESP_CAMELLIA_128_SUPPORT == ENABLED && ESP_CCM_16_SUPPORT == ENABLED)
113 #if (ESP_CAMELLIA_192_SUPPORT == ENABLED && ESP_CCM_16_SUPPORT == ENABLED)
116 #if (ESP_CAMELLIA_256_SUPPORT == ENABLED && ESP_CCM_16_SUPPORT == ENABLED)
119 #if (ESP_CAMELLIA_128_SUPPORT == ENABLED && ESP_CCM_12_SUPPORT == ENABLED)
122 #if (ESP_CAMELLIA_192_SUPPORT == ENABLED && ESP_CCM_12_SUPPORT == ENABLED)
125 #if (ESP_CAMELLIA_256_SUPPORT == ENABLED && ESP_CCM_12_SUPPORT == ENABLED)
128 #if (ESP_CAMELLIA_128_SUPPORT == ENABLED && ESP_CCM_8_SUPPORT == ENABLED)
131 #if (ESP_CAMELLIA_192_SUPPORT == ENABLED && ESP_CCM_8_SUPPORT == ENABLED)
134 #if (ESP_CAMELLIA_256_SUPPORT == ENABLED && ESP_CCM_8_SUPPORT == ENABLED)
137 #if (ESP_AES_128_SUPPORT == ENABLED && ESP_CTR_SUPPORT == ENABLED)
140 #if (ESP_AES_192_SUPPORT == ENABLED && ESP_CTR_SUPPORT == ENABLED)
143 #if (ESP_AES_256_SUPPORT == ENABLED && ESP_CTR_SUPPORT == ENABLED)
146 #if (ESP_CAMELLIA_128_SUPPORT == ENABLED && ESP_CTR_SUPPORT == ENABLED)
149 #if (ESP_CAMELLIA_192_SUPPORT == ENABLED && ESP_CTR_SUPPORT == ENABLED)
152 #if (ESP_CAMELLIA_256_SUPPORT == ENABLED && ESP_CTR_SUPPORT == ENABLED)
155 #if (ESP_AES_128_SUPPORT == ENABLED && ESP_CBC_SUPPORT == ENABLED)
158 #if (ESP_AES_192_SUPPORT == ENABLED && ESP_CBC_SUPPORT == ENABLED)
161 #if (ESP_AES_256_SUPPORT == ENABLED && ESP_CBC_SUPPORT == ENABLED)
164 #if (ESP_CAMELLIA_128_SUPPORT == ENABLED && ESP_CBC_SUPPORT == ENABLED)
167 #if (ESP_CAMELLIA_192_SUPPORT == ENABLED && ESP_CBC_SUPPORT == ENABLED)
170 #if (ESP_CAMELLIA_256_SUPPORT == ENABLED && ESP_CBC_SUPPORT == ENABLED)
173 #if (ESP_3DES_SUPPORT == ENABLED && ESP_CBC_SUPPORT == ENABLED)
176 #if (ESP_DES_SUPPORT == ENABLED && ESP_CBC_SUPPORT == ENABLED)
179 #if (ESP_IDEA_SUPPORT == ENABLED && ESP_CBC_SUPPORT == ENABLED)
182 #if (ESP_NULL_SUPPORT == ENABLED && ESP_GMAC_SUPPORT == ENABLED && \
183 ESP_AES_128_SUPPORT == ENABLED)
186 #if (ESP_NULL_SUPPORT == ENABLED && ESP_GMAC_SUPPORT == ENABLED && \
187 ESP_AES_192_SUPPORT == ENABLED)
190 #if (ESP_NULL_SUPPORT == ENABLED && ESP_GMAC_SUPPORT == ENABLED && \
191 ESP_AES_256_SUPPORT == ENABLED)
194 #if (ESP_NULL_SUPPORT == ENABLED)
204 static const uint16_t espSupportedAuthAlgos[] =
206 #if (ESP_HMAC_SUPPORT == ENABLED && ESP_SHA256_SUPPORT == ENABLED)
209 #if (ESP_HMAC_SUPPORT == ENABLED && ESP_SHA384_SUPPORT == ENABLED)
212 #if (ESP_HMAC_SUPPORT == ENABLED && ESP_SHA512_SUPPORT == ENABLED)
215 #if (ESP_CMAC_SUPPORT == ENABLED && ESP_AES_128_SUPPORT == ENABLED)
218 #if (ESP_HMAC_SUPPORT == ENABLED && ESP_SHA1_SUPPORT == ENABLED)
221 #if (ESP_HMAC_SUPPORT == ENABLED && ESP_MD5_SUPPORT == ENABLED)
232 static const uint16_t espSupportedEsnTranforms[] =
234 #if (ESP_ESN_SUPPORT == ENABLED)
257 #if (ESP_NULL_SUPPORT == ENABLED)
262 childSa->cipherAlgo = NULL;
263 childSa->encKeyLen = 0;
268 #if (ESP_IDEA_SUPPORT == ENABLED && ESP_CBC_SUPPORT == ENABLED)
274 childSa->encKeyLen = 16;
279 #if (ESP_DES_SUPPORT == ENABLED && ESP_CBC_SUPPORT == ENABLED)
285 childSa->encKeyLen = 8;
290 #if (ESP_3DES_SUPPORT == ENABLED && ESP_CBC_SUPPORT == ENABLED)
296 childSa->encKeyLen = 24;
301 #if (ESP_AES_128_SUPPORT == ENABLED && ESP_CBC_SUPPORT == ENABLED)
307 childSa->encKeyLen = 16;
312 #if (ESP_AES_192_SUPPORT == ENABLED && ESP_CBC_SUPPORT == ENABLED)
318 childSa->encKeyLen = 24;
323 #if (ESP_AES_256_SUPPORT == ENABLED && ESP_CBC_SUPPORT == ENABLED)
329 childSa->encKeyLen = 32;
334 #if (ESP_AES_128_SUPPORT == ENABLED && ESP_CTR_SUPPORT == ENABLED)
340 childSa->encKeyLen = 16;
341 childSa->saltLen = 4;
346 #if (ESP_AES_192_SUPPORT == ENABLED && ESP_CTR_SUPPORT == ENABLED)
352 childSa->encKeyLen = 24;
353 childSa->saltLen = 4;
358 #if (ESP_AES_256_SUPPORT == ENABLED && ESP_CTR_SUPPORT == ENABLED)
364 childSa->encKeyLen = 32;
365 childSa->saltLen = 4;
370 #if (ESP_AES_128_SUPPORT == ENABLED && ESP_CCM_8_SUPPORT == ENABLED)
376 childSa->encKeyLen = 16;
377 childSa->authKeyLen = 0;
378 childSa->saltLen = 3;
384 #if (ESP_AES_192_SUPPORT == ENABLED && ESP_CCM_8_SUPPORT == ENABLED)
390 childSa->encKeyLen = 24;
391 childSa->authKeyLen = 0;
392 childSa->saltLen = 3;
398 #if (ESP_AES_256_SUPPORT == ENABLED && ESP_CCM_8_SUPPORT == ENABLED)
404 childSa->encKeyLen = 32;
405 childSa->authKeyLen = 0;
406 childSa->saltLen = 3;
412 #if (ESP_AES_128_SUPPORT == ENABLED && ESP_CCM_12_SUPPORT == ENABLED)
418 childSa->encKeyLen = 16;
419 childSa->authKeyLen = 0;
420 childSa->saltLen = 3;
422 childSa->icvLen = 12;
426 #if (ESP_AES_192_SUPPORT == ENABLED && ESP_CCM_12_SUPPORT == ENABLED)
432 childSa->encKeyLen = 24;
433 childSa->authKeyLen = 0;
434 childSa->saltLen = 3;
436 childSa->icvLen = 12;
440 #if (ESP_AES_256_SUPPORT == ENABLED && ESP_CCM_12_SUPPORT == ENABLED)
446 childSa->encKeyLen = 32;
447 childSa->authKeyLen = 0;
448 childSa->saltLen = 3;
450 childSa->icvLen = 12;
454 #if (ESP_AES_128_SUPPORT == ENABLED && ESP_CCM_16_SUPPORT == ENABLED)
460 childSa->encKeyLen = 16;
461 childSa->authKeyLen = 0;
462 childSa->saltLen = 3;
464 childSa->icvLen = 16;
468 #if (ESP_AES_192_SUPPORT == ENABLED && ESP_CCM_16_SUPPORT == ENABLED)
474 childSa->encKeyLen = 24;
475 childSa->authKeyLen = 0;
476 childSa->saltLen = 3;
478 childSa->icvLen = 16;
482 #if (ESP_AES_256_SUPPORT == ENABLED && ESP_CCM_16_SUPPORT == ENABLED)
488 childSa->encKeyLen = 32;
489 childSa->authKeyLen = 0;
490 childSa->saltLen = 3;
492 childSa->icvLen = 16;
496 #if (ESP_AES_128_SUPPORT == ENABLED && ESP_GCM_8_SUPPORT == ENABLED)
502 childSa->encKeyLen = 16;
503 childSa->authKeyLen = 0;
504 childSa->saltLen = 4;
510 #if (ESP_AES_192_SUPPORT == ENABLED && ESP_GCM_8_SUPPORT == ENABLED)
516 childSa->encKeyLen = 24;
517 childSa->authKeyLen = 0;
518 childSa->saltLen = 4;
524 #if (ESP_AES_256_SUPPORT == ENABLED && ESP_GCM_8_SUPPORT == ENABLED)
530 childSa->encKeyLen = 32;
531 childSa->authKeyLen = 0;
532 childSa->saltLen = 4;
538 #if (ESP_AES_128_SUPPORT == ENABLED && ESP_GCM_12_SUPPORT == ENABLED)
544 childSa->encKeyLen = 16;
545 childSa->authKeyLen = 0;
546 childSa->saltLen = 4;
548 childSa->icvLen = 12;
552 #if (ESP_AES_192_SUPPORT == ENABLED && ESP_GCM_12_SUPPORT == ENABLED)
558 childSa->encKeyLen = 24;
559 childSa->authKeyLen = 0;
560 childSa->saltLen = 4;
562 childSa->icvLen = 12;
566 #if (ESP_AES_256_SUPPORT == ENABLED && ESP_GCM_12_SUPPORT == ENABLED)
572 childSa->encKeyLen = 32;
573 childSa->authKeyLen = 0;
574 childSa->saltLen = 4;
576 childSa->icvLen = 12;
580 #if (ESP_AES_128_SUPPORT == ENABLED && ESP_GCM_16_SUPPORT == ENABLED)
586 childSa->encKeyLen = 16;
587 childSa->authKeyLen = 0;
588 childSa->saltLen = 4;
590 childSa->icvLen = 16;
594 #if (ESP_AES_192_SUPPORT == ENABLED && ESP_GCM_16_SUPPORT == ENABLED)
600 childSa->encKeyLen = 24;
601 childSa->authKeyLen = 0;
602 childSa->saltLen = 4;
604 childSa->icvLen = 16;
608 #if (ESP_AES_256_SUPPORT == ENABLED && ESP_GCM_16_SUPPORT == ENABLED)
614 childSa->encKeyLen = 32;
615 childSa->authKeyLen = 0;
616 childSa->saltLen = 4;
618 childSa->icvLen = 16;
622 #if (ESP_CAMELLIA_128_SUPPORT == ENABLED && ESP_CBC_SUPPORT == ENABLED)
628 childSa->encKeyLen = 16;
633 #if (ESP_CAMELLIA_192_SUPPORT == ENABLED && ESP_CBC_SUPPORT == ENABLED)
639 childSa->encKeyLen = 24;
644 #if (ESP_CAMELLIA_256_SUPPORT == ENABLED && ESP_CBC_SUPPORT == ENABLED)
650 childSa->encKeyLen = 32;
655 #if (ESP_CAMELLIA_128_SUPPORT == ENABLED && ESP_CTR_SUPPORT == ENABLED)
661 childSa->encKeyLen = 16;
662 childSa->saltLen = 4;
667 #if (ESP_CAMELLIA_192_SUPPORT == ENABLED && ESP_CTR_SUPPORT == ENABLED)
673 childSa->encKeyLen = 24;
674 childSa->saltLen = 4;
679 #if (ESP_CAMELLIA_256_SUPPORT == ENABLED && ESP_CTR_SUPPORT == ENABLED)
685 childSa->encKeyLen = 32;
686 childSa->saltLen = 4;
691 #if (ESP_CAMELLIA_128_SUPPORT == ENABLED && ESP_CCM_8_SUPPORT == ENABLED)
697 childSa->encKeyLen = 16;
698 childSa->authKeyLen = 0;
699 childSa->saltLen = 3;
705 #if (ESP_CAMELLIA_192_SUPPORT == ENABLED && ESP_CCM_8_SUPPORT == ENABLED)
711 childSa->encKeyLen = 24;
712 childSa->authKeyLen = 0;
713 childSa->saltLen = 3;
719 #if (ESP_CAMELLIA_256_SUPPORT == ENABLED && ESP_CCM_8_SUPPORT == ENABLED)
725 childSa->encKeyLen = 32;
726 childSa->authKeyLen = 0;
727 childSa->saltLen = 3;
733 #if (ESP_CAMELLIA_128_SUPPORT == ENABLED && ESP_CCM_12_SUPPORT == ENABLED)
739 childSa->encKeyLen = 16;
740 childSa->authKeyLen = 0;
741 childSa->saltLen = 3;
743 childSa->icvLen = 12;
747 #if (ESP_CAMELLIA_192_SUPPORT == ENABLED && ESP_CCM_12_SUPPORT == ENABLED)
753 childSa->encKeyLen = 24;
754 childSa->authKeyLen = 0;
755 childSa->saltLen = 3;
757 childSa->icvLen = 12;
761 #if (ESP_CAMELLIA_256_SUPPORT == ENABLED && ESP_CCM_12_SUPPORT == ENABLED)
767 childSa->encKeyLen = 32;
768 childSa->authKeyLen = 0;
769 childSa->saltLen = 3;
771 childSa->icvLen = 12;
775 #if (ESP_CAMELLIA_128_SUPPORT == ENABLED && ESP_CCM_16_SUPPORT == ENABLED)
781 childSa->encKeyLen = 16;
782 childSa->authKeyLen = 0;
783 childSa->saltLen = 3;
785 childSa->icvLen = 16;
789 #if (ESP_CAMELLIA_192_SUPPORT == ENABLED && ESP_CCM_16_SUPPORT == ENABLED)
795 childSa->encKeyLen = 24;
796 childSa->authKeyLen = 0;
797 childSa->saltLen = 3;
799 childSa->icvLen = 16;
803 #if (ESP_CAMELLIA_256_SUPPORT == ENABLED && ESP_CCM_16_SUPPORT == ENABLED)
809 childSa->encKeyLen = 32;
810 childSa->authKeyLen = 0;
811 childSa->saltLen = 3;
813 childSa->icvLen = 16;
817 #if (ESP_CHACHA20_POLY1305_SUPPORT == ENABLED)
822 childSa->cipherAlgo = NULL;
823 childSa->encKeyLen = 32;
824 childSa->authKeyLen = 0;
825 childSa->saltLen = 4;
827 childSa->icvLen = 16;
831 #if (ESP_NULL_SUPPORT == ENABLED && ESP_GMAC_SUPPORT == ENABLED && \
832 ESP_AES_128_SUPPORT == ENABLED)
838 childSa->encKeyLen = 16;
839 childSa->authKeyLen = 0;
840 childSa->saltLen = 4;
842 childSa->icvLen = 16;
847 #if (ESP_NULL_SUPPORT == ENABLED && ESP_GMAC_SUPPORT == ENABLED && \
848 ESP_AES_192_SUPPORT == ENABLED)
854 childSa->encKeyLen = 24;
855 childSa->authKeyLen = 0;
856 childSa->saltLen = 4;
858 childSa->icvLen = 16;
862 #if (ESP_NULL_SUPPORT == ENABLED && ESP_GMAC_SUPPORT == ENABLED && \
863 ESP_AES_256_SUPPORT == ENABLED)
869 childSa->encKeyLen = 32;
870 childSa->authKeyLen = 0;
871 childSa->saltLen = 4;
873 childSa->icvLen = 16;
902 #if (ESP_CMAC_SUPPORT == ENABLED && ESP_AES_128_SUPPORT == ENABLED)
907 childSa->authHashAlgo = NULL;
909 childSa->authKeyLen = 16;
910 childSa->icvLen = 12;
914 #if (ESP_HMAC_SUPPORT == ENABLED && ESP_MD5_SUPPORT == ENABLED)
920 childSa->authCipherAlgo = NULL;
922 childSa->icvLen = 12;
926 #if (ESP_HMAC_SUPPORT == ENABLED && ESP_SHA1_SUPPORT == ENABLED)
932 childSa->authCipherAlgo = NULL;
934 childSa->icvLen = 12;
938 #if (ESP_HMAC_SUPPORT == ENABLED && ESP_SHA256_SUPPORT == ENABLED)
944 childSa->authCipherAlgo = NULL;
946 childSa->icvLen = 16;
950 #if (ESP_HMAC_SUPPORT == ENABLED && ESP_SHA384_SUPPORT == ENABLED)
956 childSa->authCipherAlgo = NULL;
958 childSa->icvLen = 24;
962 #if (ESP_HMAC_SUPPORT == ENABLED && ESP_SHA512_SUPPORT == ENABLED)
968 childSa->authCipherAlgo = NULL;
970 childSa->icvLen = 32;
1008 #if (IKE_CHILD_SA_PFS_SUPPORT == ENABLED)
1058 for(i = 0; i <
arraysize(espSupportedEncAlgos) && !error; i++)
1062 espSupportedEncAlgos[i].
id, espSupportedEncAlgos[i].keyLen,
1063 proposal, lastSubstruc);
1089 for(i = 0; i < (
arraysize(espSupportedAuthAlgos) - 1) && !error; i++)
1093 espSupportedAuthAlgos[i], 0, proposal, lastSubstruc);
1119 for(i = 0; i <
arraysize(espSupportedEsnTranforms) && !error; i++)
1123 espSupportedEsnTranforms[i], 0, proposal, lastSubstruc);
1153 selectedAlgo = NULL;
1157 proposalLen >= (
sizeof(
IkeProposal) + proposal->spiSize))
1160 for(i = 0; i <
arraysize(espSupportedEncAlgos) && selectedAlgo == NULL; i++)
1165 p = (uint8_t *) proposal +
sizeof(
IkeProposal) + proposal->spiSize;
1168 for(j = 0; j < proposal->
numTransforms && selectedAlgo == NULL; j++)
1179 n =
ntohs(transform->transformLength);
1208 ntohs(attr->length) == (espSupportedEncAlgos[i].
keyLen * 8))
1210 selectedAlgo = &espSupportedEncAlgos[i];
1224 selectedAlgo = &espSupportedEncAlgos[i];
1243 return selectedAlgo;
1260 arraysize(espSupportedAuthAlgos) - 1, proposal, proposalLen);
1277 arraysize(espSupportedEsnTranforms), proposal, proposalLen);
1301 childSa->encKeyLen = 0;
1304 #if (IKE_CHILD_SA_PFS_SUPPORT == ENABLED)
1340 n =
ntohs(proposal->proposalLength);
1366 childSa->encAlgoId = encAlgo->
id;
1367 childSa->encKeyLen = encAlgo->
keyLen;
1372 childSa->encKeyLen = 0;
1401 #if (IKE_CHILD_SA_PFS_SUPPORT == ENABLED)
1411 childSa->context, proposal,
n);
1426 childSa->acceptedProposalNum = proposal->proposalNum;
1430 osMemcpy(childSa->remoteSpi, proposal->spi, proposal->spiSize);
1466 childSa->encKeyLen = 0;
1491 n =
ntohs(proposal->proposalLength);
1513 osMemcpy(childSa->remoteSpi, proposal->spi, proposal->spiSize);
1529 childSa->encAlgoId = encAlgo->
id;
1530 childSa->encKeyLen = encAlgo->
keyLen;
@ IKE_TRANSFORM_ID_ENCR_AES_GCM_8
@ IKE_TRANSFORM_ID_AUTH_AES_CMAC_96
uint_t ikeGetNumTransforms(IkeTransformType transformType, const IkeProposal *proposal, size_t proposalLen)
Get the number of transforms that match a given transform type.
@ IKE_TRANSFORM_ID_AUTH_HMAC_SHA2_384_192
@ IKE_TRANSFORM_ID_AUTH_HMAC_SHA1_96
@ IKE_TRANSFORM_ID_ENCR_AES_CCM_16
const IkeEncAlgo * espSelectEncTransform(IkeChildSaEntry *childSa, const IkeProposal *proposal, size_t proposalLen)
Encryption transform negotiation.
@ IKE_TRANSFORM_ID_ENCR_AES_CTR
@ IKE_TRANSFORM_ID_ENCR_CAMELLIA_CBC
@ IKE_TRANSFORM_ID_ENCR_IDEA
@ IKE_TRANSFORM_ID_AUTH_HMAC_MD5_96
error_t ikeAddTransform(IkeTransformType transformType, uint16_t transformId, uint16_t keyLen, IkeProposal *proposal, uint8_t **lastSubstruc)
Add the supported transforms to the proposal.
@ IKE_TRANSFORM_ID_ESN_NO
No Extended Sequence Numbers.
ESP algorithm negotiation.
@ IKE_TRANSFORM_ID_ENCR_CAMELLIA_CCM_8
const uint8_t IPSEC_INVALID_SPI[4]
@ IKE_LAST_SUBSTRUC_LAST
Last proposal/transform substructure.
#define osMemcmp(p1, p2, length)
@ IKE_TRANSFORM_ID_ENCR_CAMELLIA_CCM_16
uint16_t ikeSelectTransform(IkeTransformType transformType, const uint16_t *algoList, uint_t algoListLen, const IkeProposal *proposal, size_t proposalLen)
Transform negotiation.
@ IKE_TRANSFORM_ID_ENCR_CHACHA20_POLY1305
@ IKE_ATTR_FORMAT_TV
shortened Type/Value format
error_t espSelectSaProposal(IkeChildSaEntry *childSa, const IkeSaPayload *payload)
Select a single proposal.
@ IKE_TRANSFORM_TYPE_ESN
Extended Sequence Numbers.
#define IKE_TRANSFORM_ID_INVALID
@ IKE_TRANSFORM_ID_ENCR_AES_CBC
@ IKE_TRANSFORM_ATTR_TYPE_KEY_LEN
Key Length (in bits)
ESP (IP Encapsulating Security Payload)
@ CIPHER_MODE_CHACHA20_POLY1305
#define osMemcpy(dest, src, length)
error_t ikeAddSupportedKeTransforms(IkeContext *context, IkeProposal *proposal, uint8_t **lastSubstruc)
Add the supported key exchange transforms to the proposal.
@ IKE_TRANSFORM_ID_ENCR_NULL
Helper routines for IPsec.
@ IKE_PROTOCOL_ID_ESP
ESP.
error_t espAddSupportedTransforms(IkeChildSaEntry *childSa, IkeProposal *proposal, uint8_t **lastSubstruc)
Add the supported ESP transforms to the proposal.
error_t espSelectEncAlgo(IkeChildSaEntry *childSa, uint16_t encAlgoId, size_t encKeyLen)
Select the relevant encryption algorithm.
@ IKE_TRANSFORM_ID_ENCR_AES_GCM_12
#define CAMELLIA_CIPHER_ALGO
error_t espAddSupportedAuthTransforms(IkeChildSaEntry *childSa, IkeProposal *proposal, uint8_t **lastSubstruc)
Add the supported integrity transforms to the proposal.
error_t espCheckSaProposal(IkeChildSaEntry *childSa, const IkeSaPayload *payload)
Check whether the selected proposal is acceptable.
@ IKE_TRANSFORM_TYPE_ENCR
Encryption Algorithm.
bool_t ikeIsAeadEncAlgo(uint16_t encAlgoId)
Test if the transform ID identifies an AEAD encryption algorithm.
uint16_t espSelectEsnTransform(IkeChildSaEntry *childSa, const IkeProposal *proposal, size_t proposalLen)
ESN transform negotiation.
#define SHA384_DIGEST_SIZE
error_t espAddSupportedEsnTransforms(IkeChildSaEntry *childSa, IkeProposal *proposal, uint8_t **lastSubstruc)
Add the supported ESN transforms to the proposal.
@ IKE_TRANSFORM_ID_AUTH_HMAC_SHA2_256_128
@ IKE_TRANSFORM_ID_ENCR_DES
Collection of hash algorithms.
@ IKE_TRANSFORM_ID_KE_NONE
None.
@ IKE_TRANSFORM_ID_ENCR_NULL_AUTH_AES_GMAC
@ IKE_TRANSFORM_ID_ENCR_3DES
@ IKE_TRANSFORM_ID_ENCR_AES_GCM_16
@ IKE_TRANSFORM_ID_ENCR_AES_CCM_12
@ IKE_TRANSFORM_ID_ESN_YES
Extended Sequence Numbers.
@ IKE_TRANSFORM_ID_ENCR_CAMELLIA_CTR
#define CAMELLIA_BLOCK_SIZE
bool_t ikeIsVariableLengthKeyEncAlgo(uint16_t encAlgoId)
Test if the transform ID identifies a variable-length key encryption algorithm.
error_t espSelectAuthAlgo(IkeChildSaEntry *childSa, uint16_t authAlgoId)
Select the relevant MAC algorithm.
@ IKE_TRANSFORM_ID_AUTH_HMAC_SHA2_512_256
@ IKE_TRANSFORM_ID_AUTH_NONE
#define SHA256_DIGEST_SIZE
uint16_t espSelectAuthTransform(IkeChildSaEntry *childSa, const IkeProposal *proposal, size_t proposalLen)
Integrity transform negotiation.
#define SHA512_DIGEST_SIZE
IKEv2 algorithm negotiation.
uint16_t ikeSelectKeTransform(IkeContext *context, const IkeProposal *proposal, size_t proposalLen)
Key exchange transform negotiation.
error_t espAddSupportedEncTransforms(IkeChildSaEntry *childSa, IkeProposal *proposal, uint8_t **lastSubstruc)
Add the supported encryption transforms to the proposal.
@ IKE_TRANSFORM_ID_ENCR_CAMELLIA_CCM_12
@ IKE_TRANSFORM_ID_ENCR_AES_CCM_8
@ IKE_TRANSFORM_TYPE_INTEG
Integrity Algorithm.