| Index: base/security/challenger.cc
|
| diff --git a/base/security/challenger.cc b/base/security/challenger.cc
|
| deleted file mode 100644
|
| index ab3ee95e93bb08647d702faad4b09323678994c4..0000000000000000000000000000000000000000
|
| --- a/base/security/challenger.cc
|
| +++ /dev/null
|
| @@ -1,84 +0,0 @@
|
| -// Copyright 2007-2009 Google Inc.
|
| -//
|
| -// Licensed under the Apache License, Version 2.0 (the "License");
|
| -// you may not use this file except in compliance with the License.
|
| -// You may obtain a copy of the License at
|
| -//
|
| -// http://www.apache.org/licenses/LICENSE-2.0
|
| -//
|
| -// Unless required by applicable law or agreed to in writing, software
|
| -// distributed under the License is distributed on an "AS IS" BASIS,
|
| -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| -// See the License for the specific language governing permissions and
|
| -// limitations under the License.
|
| -// ========================================================================
|
| -
|
| -#include "challenger.h"
|
| -
|
| -#include <stdlib.h>
|
| -#include <string.h>
|
| -#include <stdio.h>
|
| -
|
| -#include "rsa.h"
|
| -#include "md5.h"
|
| -#include "aes.h"
|
| -#include "b64.h"
|
| -
|
| -// Windows compilers do not have C99 support yet.
|
| -#if defined(WIN32) || defined(_WIN32)
|
| -#ifndef snprintf
|
| -#define snprintf _snprintf
|
| -#endif
|
| -#endif
|
| -
|
| -Challenger::Challenger(RSA::PublicKey pkey,
|
| - const unsigned char* seed, int seed_size)
|
| - : rsa_(pkey) {
|
| - memset(count_, 0, sizeof(count_));
|
| - // Use seed as key for AES. Compress seed first.
|
| - MD5(seed, seed_size, seed_);
|
| -}
|
| -
|
| -const char* Challenger::challenge() {
|
| - uint8_t ctr[AES_BLOCK_SIZE];
|
| -
|
| - // Compute current challenge.
|
| - AES_encrypt_block(seed_, count_, ctr);
|
| -
|
| - // Increment count for future fresh challenges.
|
| - for (size_t i = 0; i < sizeof(count_) && !++count_[i]; ++i);
|
| -
|
| - // Prepend our version number.
|
| - char* p = challenge_;
|
| - p += snprintf(challenge_, sizeof(challenge_), "%d:", rsa_.version());
|
| -
|
| - // Append our current challenge.
|
| - B64_encode(ctr, sizeof(ctr), p, sizeof(challenge_) - (p - challenge_));
|
| -
|
| - return challenge_;
|
| -}
|
| -
|
| -bool Challenger::verify(const char* hash, const char* signature) const {
|
| - char message[128];
|
| - uint8_t sigbuf[128];
|
| -
|
| - // Expect exactly 128 bytes of decoded signature data.
|
| - if (B64_decode(signature, sigbuf, sizeof(sigbuf)) != sizeof(sigbuf))
|
| - return false;
|
| -
|
| - // Verify signature with baked-in public key and recover embedded message.
|
| - int result = rsa_.verify(sigbuf, sizeof(sigbuf),
|
| - message, sizeof(message) - 1);
|
| -
|
| - if (result < 0 || result >= static_cast<int>(sizeof(message) - 1))
|
| - return false;
|
| -
|
| - // Since we're expecting a textual message, 0-terminate it.
|
| - message[result] = '\0';
|
| -
|
| - // Construct and compare expected against received signed message.
|
| - char expected[128];
|
| - snprintf(expected, sizeof(expected), "%s:%s", challenge_, hash);
|
| -
|
| - return !strcmp(expected, message);
|
| -}
|
|
|