0, 'error' => 'Daten unvollständig' ] ) ); } $name = strtolower( trim( $_REQUEST['name'] ) ); list ( $id, $server ) = explode( '@', $name ) + [0,0]; if ( ! $server ){ die( json_encode( [ 'status' => 0, 'error' => 'Serverangabe im Namen fehlt' ] ) ); } $identities = $user['settings']['identities'] ?? []; if ( in_array( $name, $identities ) ){ die( json_encode( [ 'status' => 0, 'error' => 'Die Identität ist diesem Benutzerkonto bereits zugeordnet.' ] ) ); } $localId = new ParTCP_Private_Identity( $name ); if ( ! empty( $localId->privKey ) ){ die( json_encode( [ 'status' => 0, 'error' => 'Die Identität ist bereits einem anderen Benutzerkonto zugeordnet.' ] ) ); } $localId = new ParTCP_Private_Identity( $name, TRUE, TRUE ); $identities[] = $name; $auth->update_settings( $user['id'], [ 'identities' => $identities ] ); $remoteId = new ParTCP_Public_Identity( $server, TRUE ); if ( ! $remoteId ){ die( json_encode( [ 'status' => 0, 'error' => 'Unbekannter oder nicht erreichbarer Server' ] ) ); } $msg = new ParTCP_Outgoing_Message( $remoteId, $localId, [ 'Message-Type' => 'key-submission', 'Credential~~' => trim( $_REQUEST['credential'] ), 'Public-Key' => $localId->pubKey, ]); $msg->set_date(); $response = pas_check_response( $msg->send() ); if ( is_string( $response ) ){ ParTCP_Key_Storage_Fs::delete_keypair( $name ); die( json_encode( [ 'status' => 0, 'error' => "Schlüsselhinterlegung fehlgeschlagen ({$response})" ] ) ); } echo json_encode( [ 'status' => 1, 'error' => '' ] ); // end of file ajax/create_identity.php