Sign and Verify
DALOS Ellipse: Key Pair Generation and Wallet Management
The DALOS Ellipse provides a robust framework for generating a Private-Key | Public-Key pair, with several methods available for this process. Each method culminates in the creation of a wallet file in .txt
format, which securely stores the Private Key in an encrypted format. This encryption employs AES (Advanced Encryption Standard) with symmetric encryption, meaning the same key (password) is utilized for both encryption and decryption.
Key Generation Methods
Random Generation: In this method, a BitString representing the Private Key—consisting of 1600 binary digits—is generated randomly. The Private Key can subsequently be deterministically constructed using the DALOS Ellipse parameters.
Generation from Seed: The BitString is derived from a set of Seed Words. Users must provide at least 4 Seed Words, with a maximum limit of 256. Each Seed Word can be as short as a single character. This process is deterministic; the same Seed Words will always produce the same Key Pair.
Direct Generation: Users have the option to safeguard the BitString directly, along with its equivalent integer representations in both Base 10 and Base 49 (the integers are generated from the BitString after clamping, according to DALOS Ellipse Parameters, the parameter being involved in this matter being the DALOS Ellipse Cofactor). The integer in Base 49, (obtained from the BitString after clamping as mentioned in the previous phrase), is the official format for the Private Key. Any of the following three pieces of information can be used to generate the DALOS Key Pair and associated account addresses:
The BitString itself.
The Integer in Base 10 formed from the BitString by clamping according to DALOS Ellipse parameters.
The Integer in Base 49 formed from the BitString by clamping according to DALOS Ellipse parameters.
In all cases, the user must input a password using the -p
flag. This entire process culminates in the formation of a wallet file stored on disk in .txt
format.
Wallet File Structure
The wallet file is named after the Public Key, specifically utilizing the prefix of the Public Key. It consists of the first seven characters following the prefix, followed by three ellipses (...
), and concludes with the last seven characters of the Public Key.
For example a Wallet Filename might be
9G.2idxjKM...fatDK0u.txt
This is a Wallet File created with Coco Password using the Random Generation Method, for exemplification purposes.
Opening the Wallet File
The wallet file can be accessed using the password that was originally used for its creation. The following command demonstrates how to open a wallet file:
.\Dalos.exe -open "d:\.GO_workspace\src\DALOS_Crypto\9G.2idxjKM...fatDK0u.txt" -p Coco
Description: This command opens a wallet file containing a DALOS Key Pair, thereby revealing the Private Key associated with the Key Pair, using the password employed during its initial creation.
Command-Line Flags
-open: This flag accepts the path and file name of the wallet file as a string.
-p: This flag requires the password that was used to encrypt the Private Key.
Wallet File Usage: Signing and Verification
The Wallet File can also be utilized by its owner—whom we will refer to as Alice—to sign messages, provided she knows the correct password. A third party—referred to as Bob—can then use Alice's Public Key and the signed message to verify the authenticity of the signature.
Signing a Message
.\Dalos.exe -sign "d:.GO_workspace\src\DALOS_Crypto\9G.2idxjKM...fatDK0u.txt" -p Coco
-m "This is the message that will be signed by Alice"
Upon executing this command, the output will be the signature in string format, which will look something like this:
9G.3iG9lxkzhf9nqCEr4qnvchjr1puAjmcqlwAdGrazCIFkHKz4M8f4k9mG00fMwa21DoLGsJF8ftf8pBjj486kD4Eke66FcctsLpnfCfFlHkce4f7kj8ceormhEtnsB7Eqy4pw1b1fp8fCGsIFHDB2n1g5KzLmte78bJf98g5j1BI1moDiJujdIGfyK7b9hje1hBMwKA7r4qrIikfqypJ997pAv5cci159ar6IBboipiE7Hwxq1b336n4L3AgJcb7Ja4hjEvDEouDaIlDbck62kC02Gt1Dvxbl3ofn4dCCEcAzHE0B5FclqEA6xKEjmc97rqDasvunp4i29gxGMJ5u4klti0HABevt76alGmLaoF83KGh13d8gFqx63vMaBIFIi1EIMGkKsL6I013KngfGu5oDEu2JbsqGpaHcbpfusgqxhlMxnk1HHfAaygxi08E0B1Mqqcto67erj71DGJF2palpJFtco13p9Cho3rp0icM4Bt0HCsB5qjJavKGbBxF51koLmJLAfuyKve23bHjjKH1fI0yuwdwaqnwpuG25934I3ywJn08l3fctivvH|3EkpCx2ssdEH6ddlzLFrp90b1mLgkn4DujvGdw8r6ys2MsoKululjaxtG0Mdp0CyCpyJ09ffFxasuqJaivJowleA9klu7eh7l9D6s1EBFinmbHofaAHbiKaqo6fn4yIzsgI6zntgiB07BDL1Cs19retBtb3C2nCoLL0heDdHcBJelMm6uB4bIClarzjxlo7olK7ecdwLsG4qyB3mIgKAHuBIzFDfg5IHCtgiMqJenkHqChre24JzbJbm1lrD5nkushvG2xi32JCs0u5Lp4h4G3LHxuJrr6wfr2HdivDpvd37CwGzBD9lz1wm6Dy6CEt0nB0Fv2J0MrKGqE9ze2pt8J8k6E94C3FH4GFemcdK1AK0ps4uAIxnBKdIvradJsCL40mtDpEs5laLc2JwMkotdaA8FcCGHFHenciFh5aBApCj1fKzyxyMHqpcmMipoIEvxx2wjBtBmbm7DuJu2rzfFAii5aa5b6Do04zk7F1y0kbj08kBrHJbif7zsDintIlusohwwxBoje3JGAmHJfFcyqe4B5x6G5mC7jibJnK8jzhJDfHvl4oeDbaa3aL
Verifying the Signature
After Alice signs the message, Bob can verify the signature using the following command:
.\Dalos.exe
-verify "9G.3iG9lxkzhf9nqCEr4qnvchjr1puAjmcqlwAdGrazCIFkHKz4M8f4k9mG00fMwa21DoLGsJF8ftf8pBjj486kD4Eke66FcctsLpnfCfFlHkce4f7kj8ceormhEtnsB7Eqy4pw1b1fp8fCGsIFHDB2n1g5KzLmte78bJf98g5j1BI1moDiJujdIGfyK7b9hje1hBMwKA7r4qrIikfqypJ997pAv5cci159ar6IBboipiE7Hwxq1b336n4L3AgJcb7Ja4hjEvDEouDaIlDbck62kC02Gt1Dvxbl3ofn4dCCEcAzHE0B5FclqEA6xKEjmc97rqDasvunp4i29gxGMJ5u4klti0HABevt76alGmLaoF83KGh13d8gFqx63vMaBIFIi1EIMGkKsL6I013KngfGu5oDEu2JbsqGpaHcbpfusgqxhlMxnk1HHfAaygxi08E0B1Mqqcto67erj71DGJF2palpJFtco13p9Cho3rp0icM4Bt0HCsB5qjJavKGbBxF51koLmJLAfuyKve23bHjjKH1fI0yuwdwaqnwpuG25934I3ywJn08l3fctivvH|3EkpCx2ssdEH6ddlzLFrp90b1mLgkn4DujvGdw8r6ys2MsoKululjaxtG0Mdp0CyCpyJ09ffFxasuqJaivJowleA9klu7eh7l9D6s1EBFinmbHofaAHbiKaqo6fn4yIzsgI6zntgiB07BDL1Cs19retBtb3C2nCoLL0heDdHcBJelMm6uB4bIClarzjxlo7olK7ecdwLsG4qyB3mIgKAHuBIzFDfg5IHCtgiMqJenkHqChre24JzbJbm1lrD5nkushvG2xi32JCs0u5Lp4h4G3LHxuJrr6wfr2HdivDpvd37CwGzBD9lz1wm6Dy6CEt0nB0Fv2J0MrKGqE9ze2pt8J8k6E94C3FH4GFemcdK1AK0ps4uAIxnBKdIvradJsCL40mtDpEs5laLc2JwMkotdaA8FcCGHFHenciFh5aBApCj1fKzyxyMHqpcmMipoIEvxx2wjBtBmbm7DuJu2rzfFAii5aa5b6Do04zk7F1y0kbj08kBrHJbif7zsDintIlusohwwxBoje3JGAmHJfFcyqe4B5x6G5mC7jibJnK8jzhJDfHvl4oeDbaa3aL"
-public 9G.2idxjKMnjBiJ95iodEwr8Buet1b4Br0FhB5yMEmst1pymqcpF1cr6MesKM9JC03nBrqIvDqIj2kBiH3ExkkH2eack7IqE4G0C2Ad7zFlkIeFvtIwMygmtt6koxIeqqF5h5tx5KAb4sBIKGh1sIeoAKKkAzGfLacijAek2nyDIGpLIIkbg3aAii5rBMeqty2hduAECqc6i7cuhbdcgmD4d0Aln4e30s6g8awzELJbdD7ms5Dl3b4yh6vjvhG0JBJLkJgdKehMgDFyqEnsLMqulB6jHKG9EDoGxBM7cu4lHMEpufcelCmDHAgHKhM4d6srF043vCrpDrdrd2iEArxHfGKBiJCHutBdqj9Ay6n6fov6Lcv2ux7gMxfEJ0aKmi7cBv5bAgaGJE8nGnAsJLgf6Ld7Fbk2b4hyD53n9ofhcrItxjD0rdvur3mmjv1K4a1HgJzydm9zBJDeny6t0lk6hF3A2GDgojI4J2Fqanv8x8JgtJJdnt4lgn66uow9tpzF0Cx7q4w3nt2Djb45vaCBuuMDeKDy9rmxBxtgyqJi2ClM6cG0fk1hnfatDK0u
-m "This is the message that will be signed by Alice"
This would output is the verification is true or false, and it looks like this:

Last updated