mirror of
https://github.com/PowerShell/Win32-OpenSSH.git
synced 2025-08-17 16:08:33 +02:00
The changes necessary to support visual studio fall into 2 basic groups. 1) reordering of header files, and 2) changes to support syntax differences between mingw and visual studio and 3). All changes are conditional upon the definition of the macro __VS_BUILD__ .
127 lines
3.6 KiB
C
127 lines
3.6 KiB
C
/*
|
|
* Author: NoMachine <developers@nomachine.com>
|
|
*
|
|
* Copyright (c) 2009, 2013 NoMachine
|
|
* All rights reserved
|
|
*
|
|
* Support functions and system calls' replacements needed to let the
|
|
* software run on Win32 based operating systems.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions
|
|
* are met:
|
|
*
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
* documentation and/or other materials provided with the distribution.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
|
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
|
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
*/
|
|
|
|
#ifndef KeyAuth_H
|
|
#define KeyAuth_H
|
|
|
|
#undef STRING
|
|
|
|
#ifdef __VS_BUILD__
|
|
#define UMDF_USING_NTSTATUS
|
|
#include <winsock2.h>
|
|
#include <Windows.h>
|
|
#include <LsaLookup.h>
|
|
#include <Ntsecapi.h>
|
|
#endif
|
|
|
|
|
|
#include <winsock2.h>
|
|
|
|
#include "Win64Fix.h"
|
|
|
|
#include <openssl/crypto.h>
|
|
#include <openssl/rsa.h>
|
|
#include <openssl/dsa.h>
|
|
|
|
#include <openssl/sha.h>
|
|
#include <openssl/md5.h>
|
|
|
|
#include <openssl/bn.h>
|
|
#include <openssl/evp.h>
|
|
#include <openssl/err.h>
|
|
|
|
#include <cstring>
|
|
#include <cstdio>
|
|
|
|
#include <windows.h>
|
|
#include <NTSecPkg.h>
|
|
|
|
#include "Types.h"
|
|
#include "String.h"
|
|
#include "PopBinary.h"
|
|
#include "Base64.h"
|
|
#include "Utils.h"
|
|
#include "Key.h"
|
|
#include "Debug.h"
|
|
#include "SSLFix.h"
|
|
|
|
|
|
#define SSH_BUG_SIGBLOB 0x00000001
|
|
#define SSH_BUG_RSASIGMD5 0x00002000
|
|
|
|
#define INTBLOB_LEN 20
|
|
#define SIGBLOB_LEN (2*INTBLOB_LEN)
|
|
|
|
//
|
|
// Minimum modulus size (n) for RSA keys.
|
|
//
|
|
|
|
#define SSH_RSA_MINIMUM_MODULUS_SIZE 768
|
|
|
|
|
|
static const Unsigned Char id_sha1[] =
|
|
{
|
|
0x30, 0x21, // type Sequence, length 0x21 (33)
|
|
0x30, 0x09, // type Sequence, length 0x09
|
|
0x06, 0x05, // type OID, length 0x05
|
|
0x2b, 0x0e, 0x03, 0x02, 0x1a, // id-sha1 OID
|
|
0x05, 0x00, // NULL
|
|
0x04, 0x14 // Octet string, length 0x14 (20),
|
|
// followed by sha1 hash
|
|
};
|
|
|
|
|
|
//
|
|
// id-md5 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840)
|
|
// rsadsi(113549) digestAlgorithm(2) 5 }
|
|
//
|
|
|
|
static const Unsigned Char id_md5[] =
|
|
{
|
|
0x30, 0x20, // type Sequence, length 0x20 (32)
|
|
0x30, 0x0c, // type Sequence, length 0x09
|
|
0x06, 0x08, // type OID, length 0x05
|
|
|
|
0x2a, 0x86, 0x48, 0x86, // id-md5
|
|
0xF7, 0x0D, 0x02, 0x05,
|
|
|
|
0x05, 0x00, // NULL
|
|
|
|
0x04, 0x10 // Octet string, length 0x10 (16),
|
|
// followed by md5 hash
|
|
};
|
|
|
|
|
|
Int VerifyKey(const Key *key, BYTE *sign, Int signSize,
|
|
BYTE *data, Int dataSize, Int dataFellows);
|
|
|
|
#endif
|