Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: TMC am 09.06.04 - 20:46:22

Titel: There is no public key for ''
Beitrag von: TMC am 09.06.04 - 20:46:22
Ich habe hier eine Maske, in der ich sowohl Secret key als auch Public key - Verschlüsselung anbiete (via Radiobutton, Feldname "EncryptionType".

Im Querysave steht u.a. folgendes:
Code
FIELD Readers := Readers;
FIELD SecretEncryptionKeys := SecretEncryptionKeys;
FIELD PublicEncryptionKeys := PublicEncryptionKeys;

@If(EncryptionType = "Public";
   @Do(
      @SetField("SecretEncryptionKeys"; "");
      @SetField("Readers"; "")
   );
   EncryptionType = "Secret";
   @SetField("PublicEncryptionKeys"; "");
   ""
);

Kurz zu den Feldern:
SecretEncryptionKeys = Textfeld
PublicEncryptionKeys = Leserfeld
Readers = Leserfeld


Wenn ich nun als Verschlüsselung "Secret" auswähle, löscht der Querysave-Code den Feldinhalt von "PublicEncryptionKeys".

Abär es kommt dann obige Fehlermeldung "There is no public key for ''..."

Liegt wohl auch auf der Hand: Das Feld 'PublicEncryptionKeys' ist leer.

Wie könnte ich die Fehlermeldung umgehen? Denn das Feld 'PublicEncryptionKeys' interessiert ja nicht, wenn User "Secret" auswählt.
Titel: Re:There is no public key for ''
Beitrag von: animate am 09.06.04 - 20:53:28
ich hab leider keinen rechten Plan von Verschlüsselung in Notes.

was passiert, wenn du das Feld löschst (@DeleteField/@Unavailable, glaube ich)?
Titel: Re:There is no public key for ''
Beitrag von: TMC am 09.06.04 - 21:01:09
Jo mei, klar, that's it.

Danke, Thomas.

Ich hatte vor der Formel ein Script drin, welches das machen hätte sollen, ich hatte da aber im Backend das Item rausgeschmissen - was (natürlich) auch nicht klappte.

Hier half jetzt ein simples

FIELD PublicEncryptionKeys := @Unavailable;


Jetzt stehe ich erneut auf dem Schlauch:

Wie binde ich FIELD abc := .... in ein @If ein?
@Setfield geht da afaik nicht mit @Unavailable, da wohl ein Feldwert als String erwartet wird.....

Titel: Re:There is no public key for ''
Beitrag von: animate am 09.06.04 - 21:02:31
das alte Problem mit @If und FIELD :D

FIELD x := @If(a;b;c)
Titel: Re:There is no public key for ''
Beitrag von: TMC am 09.06.04 - 21:08:28
das alte Problem mit @If und FIELD :D

Exakt  :P Hab ich x-mal gelesen, und auch schon ein paar mal verwendet - aber einfach nicht drangedacht.

Danke, Thomas. Du hast mir sehr geholfen - auch wenn das eigentlich Basics waren :D
Titel: Re:There is no public key for ''
Beitrag von: animate am 09.06.04 - 21:12:56
np.

in Notes 6 gehts auch so, wie dus zuerst probiert hast. Glaube ich.
Titel: Re:There is no public key for ''
Beitrag von: TMC am 09.06.04 - 21:39:42
Jo, hatte ich auch schon mal beiläufig gehört/gelesen, dass das unter R6 simpler gelöst ist.

Habe jetzt die Querysave-Formel so umgebastelt:
Code
FIELD SecretEncryptionKeys :=
   @If(EncryptionType = "Public";
   @Unavailable;
   SecretEncryptionKeys
   );

FIELD Readers :=
   @If(EncryptionType = "Public";
   @Unavailable;
   Readers
   );

FIELD PublicEncryptionKeys :=
   @If(EncryptionType = "Secret";
   @Unavailable;
    PublicEncryptionKeys
   );
1

Warum hier eine "main expression" in Formeln erforderlich ist, hat mich schon immer gewundert wenn man nur mit FIELD arbeitet, aber egal, die simple "1" tut es ja schon.

Interessant wäre jetzt noch zu wissen, wie man das Querysave in Lotus Script realisieren würde, denn Backend-Löschung des Items bringt nichts. Oder haben wir da eine Frontend-Methode, die wie ein @Unavailable arbeitet?
Ich frage das rein interessehalber.....