Browse Source

correct Poly1305 calculation

pull/1194/head
orignal 7 years ago
parent
commit
966256ac32
  1. 5
      libi2pd/Crypto.cpp

5
libi2pd/Crypto.cpp

@ -1081,6 +1081,7 @@ namespace crypto @@ -1081,6 +1081,7 @@ namespace crypto
if (rem)
{
// padding1
rem = 16 - rem;
memcpy (polyMsg.data () + offset, padding, rem); offset += rem;
}
memcpy (polyMsg.data () + offset, buf, msgLen); offset += msgLen; // encrypted data
@ -1088,12 +1089,14 @@ namespace crypto @@ -1088,12 +1089,14 @@ namespace crypto
if (rem)
{
// padding2
rem = 16 - rem;
memcpy (polyMsg.data () + offset, padding, rem); offset += rem;
}
htole64buf (polyMsg.data () + offset, adLen); offset += 8;
htole64buf (polyMsg.data () + offset, msgLen); offset += 8;
// calculate Poly1305 tag and write in after encrypted data
Poly1305HMAC ((uint32_t *)(buf + msgLen), (uint32_t *)key, polyMsg.data (), offset);
Poly1305HMAC ((uint32_t *)(buf + msgLen), (uint32_t *)polyKey, polyMsg.data (), offset);
return msgLen + 16;
}

Loading…
Cancel
Save