def test_scram_sha_256_rfc_example(self): # Test SCRAM-SHA-256 against an example in RFC 7677 username = '******' password = '******' client_nonce = 'rOprNGfwEbeRWgbNEkqO' server_nonce = 'rOprNGfwEbeRWgbNEkqO%hvYDpWUa2RaTCAfuxFIlj)hNlF$k0' salt = 'W22ZaJ0SNY7soEsUEjb6gQ==' channel_binding = 'biws' iterations = 4096 client_first = f'n={username},r={client_nonce}' server_first = f'r={server_nonce},s={salt},i={iterations}' client_final = f'c={channel_binding},r={server_nonce}' AuthMessage = f'{client_first},{server_first},{client_final}'.encode() SaltedPassword = scram.get_salted_password( scram.saslprep(password).encode('utf-8'), base64.b64decode(salt), iterations) ClientKey = scram.get_client_key(SaltedPassword) ServerKey = scram.get_server_key(SaltedPassword) StoredKey = scram.H(ClientKey) ClientSignature = scram.HMAC(StoredKey, AuthMessage) ClientProof = scram.XOR(ClientKey, ClientSignature) ServerProof = scram.HMAC(ServerKey, AuthMessage) self.assertEqual(scram.B64(ClientProof), 'dHzbZapWIk4jUhN+Ute9ytag9zjfMHgsqmmiz7AndVQ=') self.assertEqual(scram.B64(ServerProof), '6rriTRBi23WpRR/wtup+mMhUZUn/dB5nLTJRsjl95G4=')
async def _populate_misc_instance_data(schema, cluster): mock_auth_nonce = scram.B64(scram.generate_nonce()) instance_data = { 'mock_auth_nonce': mock_auth_nonce, } data_dir = cluster.get_data_dir() fn = os.path.join(data_dir, 'instance_data.pickle') with open(fn, 'wb') as f: pickle.dump(instance_data, f) ver = buildmeta.get_version() json_instance_data = { 'version': { 'major': ver.major, 'minor': ver.minor, 'stage': ver.stage.name.lower(), 'stage_no': ver.stage_no, 'local': tuple(ver.local) if ver.local else (), } } fn = os.path.join(data_dir, 'instance_data.json') with open(fn, 'wt') as f: json.dump(json_instance_data, f)