blob: d627304273d1ea4264f21b285150f5761809811b [file] [log] [blame]
/**********************************************************************
// @@@ START COPYRIGHT @@@
//
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you 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.
//
// @@@ END COPYRIGHT @@@
//
**********************************************************************/
// security.h
// The actual implemantation of functions in the wrapper class
// SecPwd.
#ifndef securityh
#define securityh
#ifdef _WINDOWS
#define _CRT_RAND_S
#endif
#include "secdefsCommon.h"
#include "securityException.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
class Key;
#ifdef _WINDOWS
class __declspec( dllexport ) Security
#else
class Security
#endif
{
public:
// Ctor
Security();
// cert_file - fully qualified name of certificate file
Security(const char *cert_file) throw (SecurityException);
~Security();
// Encrypts session key, nonce and password. Builds password key
// to return to caller
// pwd - password to be encrypted
// pwdLen - Length of the password
// rolename - role name to build password key
// rolenameLen - Length or the rolename
// procInfo - process information (PIN, CPU, segment name and time stamp)
// procInfoLen - Length of the process info (20 bytes)
// pwdkey - returns pwdkey
// pwdkeyLen - returned password key length in pwedkeyLen
void encryptPwd(const char *pwd, const int pwdLen,
const char *rolename, const int rolenameLen,
const char *proInfo, const int procInfoLen,
char *pwdkey, int *pwdkeyLen)
throw (SecurityException);
// Get length of buffer for password encryption (public)
// Returns pass word key length if successed and 0 if failed
int getPwdEBufferLen() throw (SecurityException);
// Gets certificate's expiration date
// Returns pointer to string represents the certificate's expiration day
// in the format YYMMDDHHMMSSZ
unsigned char* getCertExpDate();
// Get length of buffer for data encryption (symmetric)
// dataLen - the length of the data to be encrypted
//int getDataEBuffer(int dataLen);
int getLittleEndian();
private:
// encryption is required or not for replied message 0-yes, 1-no
//int m_encrypted;
// Generates session key and nonce
void generateSessionKey() throw (SecurityException);
// security option - mandatory - 1 or undocumented option - 0
bool m_security;
// Time when session key is generated
unsigned long long m_keyTime;
// Neo system name
unsigned long long m_nonceSeq; // Need to use 64 bit number type here
// Processor architecture of the client system 1 - little Endian 2 - big Endian
int m_littleEndian;
// key
Key *m_keyObj;
// password key
PwdKey m_pwdKey;
unsigned char *m_DataEncryptionBuffer;
};
#endif