summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/MessageAuthenticator.cpp
blob: 42207fbdcfac0de69a1ec8eba7f6bd332b3b263b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
// **********************************************************************
//
// Copyright (c) 2002
// MutableRealms, Inc.
// Huntsville, AL, USA
//
// All Rights Reserved
//
// **********************************************************************

#include <Ice/MessageAuthenticator.h>

using Ice::ByteSeq;

void ::IceInternal::incRef(::SecureUdp::MessageAuthenticator* p) { p->__incRef(); }
void ::IceInternal::decRef(::SecureUdp::MessageAuthenticator* p) { p->__decRef(); }

SecureUdp::MessageAuthenticator::MessageAuthenticator()
{
    // TODO: Should generate a random MAC key here

    // Bogus MAC - gotta fix this.
    _macKeyBytes.push_back(2);
    _macKeyBytes.push_back(0);
    _macKeyBytes.push_back(0);
    _macKeyBytes.push_back(2);
    _macKeyBytes.push_back(0);
    _macKeyBytes.push_back(1);
    _macKeyBytes.push_back(1);
    _macKeyBytes.push_back(7);
    _macKeyBytes.push_back(1);
    _macKeyBytes.push_back(0);
    _macKeyBytes.push_back(2);
    _macKeyBytes.push_back(2);
}

SecureUdp::MessageAuthenticator::MessageAuthenticator(const ByteSeq& macKey)
{
    _macKeyBytes = macKey;
}

SecureUdp::MessageAuthenticator::~MessageAuthenticator()
{
}

ByteSeq
SecureUdp::MessageAuthenticator::computeMAC(const ByteSeq& message) const
{
    // TODO: Should generate a REAL MAC here.
    ByteSeq bytes;

    // Bogus MAC - gotta fix this.
    bytes.push_back(2);
    bytes.push_back(0);
    bytes.push_back(0);
    bytes.push_back(2);
    bytes.push_back(0);
    bytes.push_back(1);
    bytes.push_back(1);
    bytes.push_back(7);
    bytes.push_back(1);
    bytes.push_back(0);
    bytes.push_back(2);
    bytes.push_back(2);

    return bytes;
}

bool
SecureUdp::MessageAuthenticator::authenticate(const ByteSeq& message, const ByteSeq& macCode)
{
    ByteSeq targetMAC = computeMAC(message);
    return targetMAC == macCode;
}

const ByteSeq&
SecureUdp::MessageAuthenticator::getMACKey() const
{
    return _macKeyBytes;
}