summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/MessageAuthenticator.cpp
blob: d65c41327daa30cd5f4e05299da4221c81301464 (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(::IceSecurity::SecureUdp::MessageAuthenticator* p) { p->__incRef(); }
void ::IceInternal::decRef(::IceSecurity::SecureUdp::MessageAuthenticator* p) { p->__decRef(); }

IceSecurity::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);
}

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

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

ByteSeq
IceSecurity::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
IceSecurity::SecureUdp::MessageAuthenticator::authenticate(const ByteSeq& message, const ByteSeq& macCode)
{
    ByteSeq targetMAC = computeMAC(message);
    return targetMAC == macCode;
}

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