summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/MessageAuthenticator.cpp
blob: 7c8763e83dcaac6fd5e789fa172875628e8986bc (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
82
83
// **********************************************************************
//
// 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
    int i = 0;

    // Bogus MAC - gotta fix this.
    _macKeyBytes[i++] = 2;
    _macKeyBytes[i++] = 0;
    _macKeyBytes[i++] = 0;
    _macKeyBytes[i++] = 2;
    _macKeyBytes[i++] = 0;
    _macKeyBytes[i++] = 1;
    _macKeyBytes[i++] = 1;
    _macKeyBytes[i++] = 7;
    _macKeyBytes[i++] = 1;
    _macKeyBytes[i++] = 0;
    _macKeyBytes[i++] = 2;
    _macKeyBytes[i++] = 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;
    int i = 0;

    // Bogus MAC - gotta fix this.
    bytes[i++] = 2;
    bytes[i++] = 0;
    bytes[i++] = 0;
    bytes[i++] = 2;
    bytes[i++] = 0;
    bytes[i++] = 1;
    bytes[i++] = 1;
    bytes[i++] = 7;
    bytes[i++] = 1;
    bytes[i++] = 0;
    bytes[i++] = 2;
    bytes[i++] = 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;
}