diff --git a/dbs/src/values/peer_card.rs b/dbs/src/values/peer_card.rs
index ee08696d7a9afd211e75c4ba62ef9fed8673c810..b68d1bdad333755086c0f0e711eed4aa3fa87bc9 100644
--- a/dbs/src/values/peer_card.rs
+++ b/dbs/src/values/peer_card.rs
@@ -19,11 +19,35 @@ use crate::*;
 pub struct PeerCardDbV1 {
     pub version: u32,
     pub currency: String,
-    pub pubkey: String,
-    pub blockstamp: String,
+    pub pubkey: PublicKey,
+    pub blockstamp: Blockstamp,
     pub endpoints: Vec<String>,
-    pub status: String,
-    pub signature: String,
+    pub signature: Signature,
+    pub status: bool,
+}
+
+impl PeerCardDbV1 {
+    pub fn to_raw_string(&self) -> String {
+        format!(
+            "{}{}\n",
+            self.to_raw_unsigned_string(),
+            self.signature.to_base64(),
+        )
+    }
+    fn to_raw_unsigned_string(&self) -> String {
+        format!(
+            "Version: {}\nType: Peer\nCurrency: {}\nPublicKey: {}\nBlock: {}\nEndpoints:\n{}\n",
+            self.version,
+            self.currency,
+            self.pubkey.to_base58(),
+            self.blockstamp,
+            self.endpoints.join("\n"),
+        )
+    }
+    pub fn verify_sig(&self) -> Result<(), dubp::crypto::keys::SigError> {
+        self.pubkey
+            .verify(self.to_raw_unsigned_string().as_bytes(), &self.signature)
+    }
 }
 
 impl AsBytes for PeerCardDbV1 {
@@ -56,3 +80,34 @@ impl ExplorableValue for PeerCardDbV1 {
         serde_json::to_value(self).map_err(|e| KvError::DeserError(e.into()))
     }
 }
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+    use unwrap::unwrap;
+
+    #[test]
+    fn test_old_peer_sig() {
+        let peer = PeerCardDbV1 {
+            version: 10,
+            currency: "g1".to_owned(),
+            pubkey: unwrap!(PublicKey::from_base58("8iVdpXqFLCxGyPqgVx5YbFSkmWKkceXveRd2yvBKeARL")),
+            blockstamp: unwrap!(Blockstamp::from_str("423354-00000033A87209DC21BD643088ED8AD52464A80C04BE3F8FBFA4291A9999BE50")),
+            endpoints: vec![
+                "BMAS g1.duniter.org 443".to_owned(),
+                "BASIC_MERKLED_API 91.121.157.13 10901".to_owned(),
+                "WS2P e66254bf g1.duniter.org 443 ws2p".to_owned()
+            ],
+            signature: unwrap!(Signature::from_base64("qr6Cnr/Qsgw/clbt0LbdkaFaUwhdgBJw5Fzpn8EhI9zM5/rGbVF6kqiB5pRJxf17XtI45qQ7H7SBbl8X2kAtCA==")),
+            status: true,
+
+        };
+
+        let peer_raw = peer.to_raw_unsigned_string();
+        assert_eq!(
+            &peer_raw,
+            "Version: 10\nType: Peer\nCurrency: g1\nPublicKey: 8iVdpXqFLCxGyPqgVx5YbFSkmWKkceXveRd2yvBKeARL\nBlock: 423354-00000033A87209DC21BD643088ED8AD52464A80C04BE3F8FBFA4291A9999BE50\nEndpoints:\nBMAS g1.duniter.org 443\nBASIC_MERKLED_API 91.121.157.13 10901\nWS2P e66254bf g1.duniter.org 443 ws2p\n",
+        );
+        assert!(peer.verify_sig().is_ok());
+    }
+}