/** * @param type * @return */ protected static NegotiateContextResponse createContext ( int type ) { switch ( type ) { case EncryptionNegotiateContext.NEGO_CTX_ENC_TYPE: return new EncryptionNegotiateContext(); case PreauthIntegrityNegotiateContext.NEGO_CTX_PREAUTH_TYPE: return new PreauthIntegrityNegotiateContext(); } return null; }
private static boolean checkPreauthContext ( Smb2NegotiateRequest req, PreauthIntegrityNegotiateContext pc ) { if ( pc.getHashAlgos() == null || pc.getHashAlgos().length != 1 ) { log.error("Server returned no hash selection"); return false; } PreauthIntegrityNegotiateContext rpc = null; for ( NegotiateContextRequest rnc : req.getNegotiateContexts() ) { if ( rnc instanceof PreauthIntegrityNegotiateContext ) { rpc = (PreauthIntegrityNegotiateContext) rnc; } } if ( rpc == null ) { return false; } boolean valid = false; for ( int hash : rpc.getHashAlgos() ) { if ( hash == pc.getHashAlgos()[ 0 ] ) { valid = true; } } if ( !valid ) { log.error("Server returned invalid hash selection"); return false; } return true; }
/** * @param type * @return */ protected static NegotiateContextResponse createContext ( int type ) { switch ( type ) { case EncryptionNegotiateContext.NEGO_CTX_ENC_TYPE: return new EncryptionNegotiateContext(); case PreauthIntegrityNegotiateContext.NEGO_CTX_PREAUTH_TYPE: return new PreauthIntegrityNegotiateContext(); } return null; }
private static boolean checkPreauthContext ( Smb2NegotiateRequest req, PreauthIntegrityNegotiateContext pc ) { if ( pc.getHashAlgos() == null || pc.getHashAlgos().length != 1 ) { log.error("Server returned no hash selection"); return false; } PreauthIntegrityNegotiateContext rpc = null; for ( NegotiateContextRequest rnc : req.getNegotiateContexts() ) { if ( rnc instanceof PreauthIntegrityNegotiateContext ) { rpc = (PreauthIntegrityNegotiateContext) rnc; } } if ( rpc == null ) { return false; } boolean valid = false; for ( int hash : rpc.getHashAlgos() ) { if ( hash == pc.getHashAlgos()[ 0 ] ) { valid = true; } } if ( !valid ) { log.error("Server returned invalid hash selection"); return false; } return true; }
byte[] salt = new byte[32]; config.getRandom().nextBytes(salt); negoContexts.add(new PreauthIntegrityNegotiateContext(config, new int[] { PreauthIntegrityNegotiateContext.HASH_ALGO_SHA512 }, salt));
return false; this.selectedPreauthHash = pi.getHashAlgos()[ 0 ];
byte[] salt = new byte[32]; config.getRandom().nextBytes(salt); negoContexts.add(new PreauthIntegrityNegotiateContext(config, new int[] { PreauthIntegrityNegotiateContext.HASH_ALGO_SHA512 }, salt));
return false; this.selectedPreauthHash = pi.getHashAlgos()[ 0 ];