Skip to content
Snippets Groups Projects
Select Git revision
  • 4c819e3609ba69d67f8cf8c25c7cbde84a7c9115
  • dev default protected
  • release/1.9.1 protected
  • pini-1.8-docker
  • pini-sync-onlypeers
  • duniter-v2s-issue-123-industrialize-releases
  • feature/build-aarch64-nodejs16
  • release/1.8 protected
  • pini-docker
  • ci_tags
  • fix/1448/1.8/txs_not_stored
  • feature/node-20
  • fix/1441/node_summary_with_storage
  • fix/1442/improve_bma_tx_history
  • feature/wotwizard-1.8
  • release/1.9 protected
  • 1.7 protected
  • feature/docker-set-latest protected
  • feature/fast-docker-build-1.8.4
  • fast-docker-build protected
  • feature/dump-distance
  • v1.8.7 protected
  • v1.8.7-rc4 protected
  • v1.8.7-rc3 protected
  • v1.8.7-rc2 protected
  • v1.8.7-rc1 protected
  • v1.8.6 protected
  • v1.7.23 protected
  • v1.8.5 protected
  • v1.8.4 protected
  • v1.8.3 protected
  • v1.8.2 protected
  • v1.8.1 protected
  • v1.8.0 protected
  • v1.8.0-rc1 protected
  • v1.8.0-beta5 protected
  • v1.8.0-beta4 protected
  • v1.8.0-beta3 protected
  • v1.8.0-beta2 protected
  • v1.8.0-beta protected
  • v1.7.21 protected
41 results

install.sh

Blame
  • identity.rs 8.28 KiB
    //  Copyright (C) 2018  The Duniter Project Developers.
    //
    // This program is free software: you can redistribute it and/or modify
    // it under the terms of the GNU Affero General Public License as
    // published by the Free Software Foundation, either version 3 of the
    // License, or (at your option) any later version.
    //
    // This program is distributed in the hope that it will be useful,
    // but WITHOUT ANY WARRANTY; without even the implied warranty of
    // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    // GNU Affero General Public License for more details.
    //
    // You should have received a copy of the GNU Affero General Public License
    // along with this program.  If not, see <https://www.gnu.org/licenses/>.
    
    //! Wrappers around Identity documents.
    
    use duniter_crypto::keys::{PublicKey, ed25519};
    use regex::Regex;
    
    use Blockstamp;
    use blockchain::{BlockchainProtocol, Document, DocumentBuilder, IntoSpecializedDocument};
    use blockchain::v10::documents::{StandardTextDocumentParser, TextDocument, TextDocumentBuilder,
                                     V10Document, V10DocumentParsingError};
    
    lazy_static! {
        static ref IDENTITY_REGEX: Regex = Regex::new(
            "^Issuer: (?P<issuer>[1-9A-Za-z][^OIl]{43,44})\nUniqueID: (?P<uid>[[:alnum:]_-]+)\nTimestamp: (?P<blockstamp>[0-9]+-[0-9A-F]{64})\n$"
        ).unwrap();
    }
    
    /// Wrap an Identity document.
    ///
    /// Must be created by parsing a text document or using a builder.
    #[derive(Debug, Clone)]
    pub struct IdentityDocument {
        /// Document as text.
        ///
        /// Is used to check signatures, and other values
        /// must be extracted from it.
        text: String,
    
        /// Currency.
        currency: String,
        /// Unique ID
        unique_id: String,
        /// Blockstamp
        blockstamp: Blockstamp,
        /// Document issuer (there should be only one).
        issuers: Vec<ed25519::PublicKey>,
        /// Document signature (there should be only one).
        signatures: Vec<ed25519::Signature>,
    }
    
    impl IdentityDocument {
        /// Unique ID
        pub fn unique_id(&self) -> &str {
            &self.unique_id
        }
    }
    
    impl Document for IdentityDocument {
        type PublicKey = ed25519::PublicKey;
        type CurrencyType = str;
    
        fn version(&self) -> u16 {
            10
        }
    
        fn currency(&self) -> &str {