diff --git a/e2e/singleUse/mac.go b/e2e/singleUse/mac.go index 803bde67651c80e3be95dd521ce99b9dcfeb1752..1503bc4e98cacdd2ac874874cda8989d09924a4a 100644 --- a/e2e/singleUse/mac.go +++ b/e2e/singleUse/mac.go @@ -17,7 +17,12 @@ const macConstant = "macConstant" // MakeMAC generates the MAC used in the cmix message holding the single-use // payload. func MakeMAC(dhKey *cyclic.Int, encryptedPayload []byte) []byte { - return makeHash(dhKey, encryptedPayload, []byte(macConstant)) + mac := makeHash(dhKey, encryptedPayload, []byte(macConstant)) + + // Set the first bit as zero to ensure everything stays in the group + mac[0] &= 0b01111111 + + return mac } // VerifyMAC determines if the provided MAC is valid for the given key and diff --git a/e2e/singleUse/mac_test.go b/e2e/singleUse/mac_test.go index 0a66deaccc9b4da902636bbc8458c5a7aea3f44a..73829a5b656e1148f0ce9542a408f82ae61c1e2f 100644 --- a/e2e/singleUse/mac_test.go +++ b/e2e/singleUse/mac_test.go @@ -20,13 +20,13 @@ func TestMAC_Consistency(t *testing.T) { expectedMACs := []string{ "D7vXMT3iX/1tvFPjowoz3w5b3PbECB4EFgkR3hNzyCM=", "ffW26eqwyTHERUPHbmFkUitRj7c+c/PQayfwQPLihNs=", - "/lyTEnFbzEEmmMjOQhq6qr0jUYE2j22ERcR4CLH9368=", - "vPB8eXP8BXWdxSU4a+Lp1pYVWb98COtWtR0sBngGyTs=", + "flyTEnFbzEEmmMjOQhq6qr0jUYE2j22ERcR4CLH9368=", + "PPB8eXP8BXWdxSU4a+Lp1pYVWb98COtWtR0sBngGyTs=", "BuvhuSO01uM+nVQPwXlOwRzr7xchVM1dRoF9h5TC2HU=", - "vF5iYaFdhLtgOO5hWNpAF6jJaW4utF1MLGaz/gYb0TY=", - "opI2htMJEqZvvEKHAwWnTSqgvaAempY9//rRxNNFHQU=", - "ppGzFglPaLzytF5gJRtSFbYoidsShEBoX1cxkAJY3F4=", - "pdzZmlz6qdChwo7B5sChTRUpQ5zLvlH5LgndOhDHAt8=", + "PF5iYaFdhLtgOO5hWNpAF6jJaW4utF1MLGaz/gYb0TY=", + "IpI2htMJEqZvvEKHAwWnTSqgvaAempY9//rRxNNFHQU=", + "JpGzFglPaLzytF5gJRtSFbYoidsShEBoX1cxkAJY3F4=", + "JdzZmlz6qdChwo7B5sChTRUpQ5zLvlH5LgndOhDHAt8=", "BHP2yvbUcynr6vM61qt+18YshTsyArJqv0VCq/EI3+o=", } grp := getGrp() @@ -91,13 +91,13 @@ func TestVerifyMAC(t *testing.T) { expectedMACs := []string{ "D7vXMT3iX/1tvFPjowoz3w5b3PbECB4EFgkR3hNzyCM=", "ffW26eqwyTHERUPHbmFkUitRj7c+c/PQayfwQPLihNs=", - "/lyTEnFbzEEmmMjOQhq6qr0jUYE2j22ERcR4CLH9368=", - "vPB8eXP8BXWdxSU4a+Lp1pYVWb98COtWtR0sBngGyTs=", + "flyTEnFbzEEmmMjOQhq6qr0jUYE2j22ERcR4CLH9368=", + "PPB8eXP8BXWdxSU4a+Lp1pYVWb98COtWtR0sBngGyTs=", "BuvhuSO01uM+nVQPwXlOwRzr7xchVM1dRoF9h5TC2HU=", - "vF5iYaFdhLtgOO5hWNpAF6jJaW4utF1MLGaz/gYb0TY=", - "opI2htMJEqZvvEKHAwWnTSqgvaAempY9//rRxNNFHQU=", - "ppGzFglPaLzytF5gJRtSFbYoidsShEBoX1cxkAJY3F4=", - "pdzZmlz6qdChwo7B5sChTRUpQ5zLvlH5LgndOhDHAt8=", + "PF5iYaFdhLtgOO5hWNpAF6jJaW4utF1MLGaz/gYb0TY=", + "IpI2htMJEqZvvEKHAwWnTSqgvaAempY9//rRxNNFHQU=", + "JpGzFglPaLzytF5gJRtSFbYoidsShEBoX1cxkAJY3F4=", + "JdzZmlz6qdChwo7B5sChTRUpQ5zLvlH5LgndOhDHAt8=", "BHP2yvbUcynr6vM61qt+18YshTsyArJqv0VCq/EI3+o=", } grp := getGrp() diff --git a/e2e/singleUse/transmitFingerprint.go b/e2e/singleUse/transmitFingerprint.go index bfcccd9d38231fe2613ae8992309b4a1495c9b51..c246063fd73ba216e2c11dbc0163d142990e9f89 100644 --- a/e2e/singleUse/transmitFingerprint.go +++ b/e2e/singleUse/transmitFingerprint.go @@ -21,5 +21,8 @@ func TransmitFingerprint(dhKey *cyclic.Int) format.Fingerprint { fp := format.Fingerprint{} copy(fp[:], makeHash(dhKey, []byte(transmitFPConstant))) + // Set the first bit as zero to ensure everything stays in the group + fp[0] &= 0b01111111 + return fp } diff --git a/e2e/singleUse/transmitFingerprint_test.go b/e2e/singleUse/transmitFingerprint_test.go index bb1a8065a8645c0d976698c7dd9450a1f168bbe3..5d0f382ac8598e37da0b9e99ebc0ade1a0a7997f 100644 --- a/e2e/singleUse/transmitFingerprint_test.go +++ b/e2e/singleUse/transmitFingerprint_test.go @@ -20,16 +20,16 @@ import ( // Tests that the generated fingerprints do not change. func TestTransmitFingerprint_Consistency(t *testing.T) { expectedFPs := []string{ - "8xef7y86YmR6+qVBaVghPYbEd0j7seLUxR1v1dxqiNo=", + "cxef7y86YmR6+qVBaVghPYbEd0j7seLUxR1v1dxqiNo=", "LJ1HQ8zZPY3z+6UkKZMSDN2WymMmwuWW3GCjtAGfUlc=", "Fc8CN69uMxT1zBAr3Ed/AOy6Py3XDb3i7LngRsax0K8=", - "4mvA+dxgIy/UxRVIvzFgGtEuMoWI8RodF7JMFIO5xcI=", - "3YJPhLeI2+RawlSMUTEwTP1iJrFAa5zboCf5fjc/k3o=", - "mEOS0pDuNYS5hpNHeJ2IhzlZFf9J5oHRvFpovNwWS7c=", - "i3k7dv1Nch1oTT4aOxbBDifmf7+mT34ErFFaWW5LDb8=", + "YmvA+dxgIy/UxRVIvzFgGtEuMoWI8RodF7JMFIO5xcI=", + "XYJPhLeI2+RawlSMUTEwTP1iJrFAa5zboCf5fjc/k3o=", + "GEOS0pDuNYS5hpNHeJ2IhzlZFf9J5oHRvFpovNwWS7c=", + "C3k7dv1Nch1oTT4aOxbBDifmf7+mT34ErFFaWW5LDb8=", "ck/wkZ3lv0bcQuW+Z2dw37m+Re0URPw4UsWBPAWBEtw=", - "k/YRXaE2dplVPZSiEY+7C0e6GlDeR3jLrIPRWgeL3cI=", - "qkT2Hfz8A7jNxOhDYG266b/hvWcQtAx0ay67Az80bAY=", + "E/YRXaE2dplVPZSiEY+7C0e6GlDeR3jLrIPRWgeL3cI=", + "KkT2Hfz8A7jNxOhDYG266b/hvWcQtAx0ay67Az80bAY=", } grp := getGrp() prng := rand.New(rand.NewSource(42))