void Server::LoadCertificates( QString KeyAndCertPath ) { key = KeyAndCertPath + "server_.key"; certificate = KeyAndCertPath + "server_.csr"; QFileInfo keyInfo(key); QFileInfo certificateInfo(certificate); if (keyInfo.exists() == false) { std::cout << "Key file does not exist" << key.toStdString() << keyInfo.exists() << " " << keyInfo.isReadable() << std::endl; return; } if (keyInfo.isReadable() == false) { std::cout << "Key file is not readable" << key.toStdString() << keyInfo.exists() << " " << keyInfo.isReadable() << std::endl; return; } if ( certificateInfo.exists() == false ) { std::cout << "certificate file does not exist" << certificate.toStdString() << certificateInfo.exists() << " " << certificateInfo.isReadable() << std::endl; return; } if ( certificateInfo.isReadable() == false ) { std::cout << "certificate file is not readable" << certificate.toStdString() << certificateInfo.exists() << " " << certificateInfo.isReadable() << std::endl; return; } }
void Server::checkFileStatus() { QFileInfo keyInfo(key); QFileInfo certificateInfo(certificate); if (keyInfo.exists() && keyInfo.isReadable() && certificateInfo.exists() && certificateInfo.isReadable()) { ui->startStopButton->setEnabled(true); ui->logTextEdit->clear(); } else { ui->startStopButton->setEnabled(false); ui->logTextEdit->setText(INVALID_FILE_MESSAGE); } }
static auto_ptr<DSIGKeyInfoX509> SAMLFindKey(const XSECEnv &secEnv, const DOMElement *sigElem) { DOMNodeList *keyInfos = sigElem->getElementsByTagName(MAKE_UNICODE_STRING("ds:X509Data")); if (keyInfos->getLength() == 0) { return auto_ptr<DSIGKeyInfoX509>(NULL); } auto_ptr<DSIGKeyInfoX509> keyInfo(new DSIGKeyInfoX509(&secEnv, keyInfos->item(0))); keyInfo->load(); return keyInfo; }
static BOOL decodeSK( BOOL aes256, DWORD keylen, BYTE *keybuf ) { BYTE buffer[ 1024 ]; DWORD i, size, length; struct skb { PUBLICKEYSTRUC hdr; ALG_ID algId; BYTE key[1]; } *expKey = (struct skb *)buffer; struct ptkb { PUBLICKEYSTRUC hdr; DWORD keysize; BYTE key[1]; } *txtKey = (struct ptkb *)buffer; length = (expKey->key - buffer) + keylen; if ( length > sizeof( buffer ) ) { fprintf( stderr, "CryptImportKey() requires %d bytes\n", length ); return( FALSE ); } expKey->hdr.bType = SIMPLEBLOB; expKey->hdr.bVersion = CUR_BLOB_VERSION; expKey->hdr.reserved = 0; expKey->hdr.aiKeyAlg = aes256 ? SessKey256 : SessKey128; expKey->algId = XchgKeyType; /* ** NOTE: it appears that the encoded key is byte swapped compared ** to external standards. There is a cryptic reference to a ** ReverseMemCopy() function in the RSA/SChannel server master ** key creation example. Also, the internal RSA modulus is ** byte swapped compared to the X509 encoding. This swap is ** required to interoperate with JavaSSE. */ for( i = 0; i < keylen; i++ ) expKey->key[i] = keybuf[ keylen - i - 1 ]; if ( ! CryptImportKey( provider, (BYTE *)expKey, length, xchgKey, CRYPT_EXPORTABLE, &sessKey ) ) { fprintf( stderr, "CryptImportKey() failed: 0x%x\n", GetLastError() ); return( FALSE ); } if ( ! CryptSetKeyParam( sessKey, KP_MODE, (BYTE *)&sessKeyMode, 0 ) ) { fprintf( stderr, "CryptSetKeyParam() MODE failed: 0x%x\n", GetLastError() ); return( 0 ); } if ( ! CryptSetKeyParam( sessKey, KP_PADDING, (BYTE *)&sessKeyPadding, 0 ) ) { fprintf( stderr, "CryptSetKeyParam() PADDING failed: 0x%x\n", GetLastError() ); return( 0 ); } if ( sessKeyMode == CRYPT_MODE_CBC ) { size = sizeof( length ); if ( ! CryptGetKeyParam( sessKey, KP_BLOCKLEN, (BYTE *)&length, &size, 0 ) ) { fprintf( stderr, "CryptGetKeyParam() BLOCKLEN failed: 0x%x\n", GetLastError() ); exit( 1 ); } length /= 8; /* Bits -> bytes */ for( i = 0; i < length; i++ ) buffer[i] = 0; if ( ! CryptSetKeyParam( sessKey, KP_IV, buffer, 0 ) ) { fprintf( stderr, "CryptSetKeyParam() PADDING failed: 0x%x\n", GetLastError() ); return( 0 ); } } if ( verbose ) { if ( ! CryptExportKey( sessKey, 0, PLAINTEXTKEYBLOB, 0, NULL, &size ) ) { fprintf( stderr, "CryptExportKey() [1] failed: 0x%x\n", GetLastError() ); return( FALSE ); } if ( size > sizeof( buffer ) ) { fprintf( stderr, "CryptExportKey() requires %d bytes\n", size ); return( FALSE ); } length = sizeof( buffer ); if ( ! CryptExportKey( sessKey, 0, PLAINTEXTKEYBLOB, 0, (BYTE *)txtKey, &length ) ) { fprintf( stderr, "CryptExportKey() [2] failed: 0x%x\n", GetLastError() ); return( FALSE ); } printf( "Sess Key: \n" ); hexDump( txtKey->keysize, txtKey->key ); keyInfo( sessKey ); } return( TRUE ); }