dalek-ed25519-verified/verification/CurveSig.llbc

1 line
355 KiB
Text
Raw Normal View History

{"charon_version":"0.1.212","translated":{"crate_name":"ed25519_dalek","options":{"ullbc":false,"precise_drops":false,"skip_borrowck":false,"mir":null,"rustc_args":[],"targets":[],"monomorphize":false,"monomorphize_mut":null,"start_from":["crate::verifying::verify_sha512","crate::verifying::recompute_r_sha512"],"start_from_if_exists":[],"start_from_attribute":null,"start_from_pub":false,"include":[],"opaque":["crate::verifying::sha512_new","crate::verifying::sha512_update","crate::verifying::sha512_finalize_bytes","crate::signature::compressed_from_bytes","curve25519_dalek","sha2","digest","ed25519","signature","subtle","zeroize"],"exclude":["hybrid_array","typenum"],"extract_opaque_bodies":false,"translate_all_methods":false,"duplicate_defaulted_methods":true,"lift_associated_types":["*"],"hide_marker_traits":true,"remove_adt_clauses":true,"hide_allocator":true,"remove_unused_self_clauses":true,"desugar_drops":false,"ops_to_function_calls":true,"index_to_function_calls":true,"treat_box_as_builtin":true,"raw_consts":false,"unsized_strings":false,"reconstruct_fallible_operations":true,"reconstruct_asserts":true,"unbind_item_vars":true,"print_original_ullbc":false,"print_ullbc":false,"print_built_llbc":false,"print_llbc":false,"dest_dir":null,"dest_file":"/home/oho/GitClone/Claude/FormalVerification/dalek-ed25519-verified/verification/CurveSig.llbc","no_dedup_serialized_ast":false,"format":null,"no_serialize":false,"no_typecheck":false,"no_normalize":false,"abort_on_error":false,"error_on_warnings":false,"preset":"Aeneas"},"target_information":[{"key":"x86_64-unknown-linux-gnu","value":{"target_pointer_size":8,"is_little_endian":true}}],"files":[{"id":0,"name":{"Local":"ed25519-dalek/src/verifying.rs"},"crate_name":"ed25519_dalek","contents":"// -*- mode: rust; -*-\n//\n// This file is part of ed25519-dalek.\n// Copyright (c) 2017-2019 isis lovecruft\n// See LICENSE for licensing information.\n//\n// Authors:\n// - isis agora lovecruft <isis@patternsinthevoid.net>\n\n//! ed25519 public keys.\n\nuse core::fmt::Debug;\nuse core::hash::{Hash, Hasher};\n\nuse curve25519_dalek::{\n digest::{Digest, array::typenum::U64},\n edwards::{CompressedEdwardsY, EdwardsPoint},\n montgomery::MontgomeryPoint,\n scalar::Scalar,\n};\n\nuse ed25519::signature::{MultipartVerifier, Verifier};\n\nuse sha2::Sha512;\n\n#[cfg(feature = \"pkcs8\")]\nuse ed25519::pkcs8;\n\n#[cfg(feature = \"serde\")]\nuse serde::{Deserialize, Deserializer, Serialize, Serializer};\n\n#[cfg(feature = \"digest\")]\nuse crate::context::Context;\n#[cfg(feature = \"digest\")]\nuse curve25519_dalek::digest::Update;\n#[cfg(feature = \"digest\")]\nuse signature::DigestVerifier;\n\nuse crate::{\n constants::PUBLIC_KEY_LENGTH,\n errors::{InternalError, SignatureError},\n hazmat::ExpandedSecretKey,\n signature::InternalSignature,\n signing::SigningKey,\n};\n\n#[cfg(feature = \"hazmat\")]\nmod stream;\n#[cfg(feature = \"hazmat\")]\npub use self::stream::StreamVerifier;\n\n/// An ed25519 public key.\n///\n/// # Note\n///\n/// The `Eq` and `Hash` impls here use the compressed Edwards y encoding, _not_ the algebraic\n/// representation. This means if this `VerifyingKey` is non-canonically encoded, it will be\n/// considered unequal to the other equivalent encoding, despite the two representing the same\n/// point. More encoding details can be found\n/// [here](https://hdevalence.ca/blog/2020-10-04-its-25519am).\n/// If you want to make sure that signatures produced with respect to those sorts of public keys\n/// are rejected, use [`VerifyingKey::verify_strict`].\n// Invariant: VerifyingKey.1 is always the decompression of VerifyingKey.0\n#[derive(Copy, Clone, Default, Eq)]\npub struct VerifyingKey {\n /// Serialized compressed Edwards-y point.\n pub(crate) compressed: CompressedEdwardsY,\n\n /// Decompressed Edwards point used for curve arithmetic operations.\n pub(crate) point: EdwardsPoint,\n}\n\nimpl Debug for VerifyingKey {\n fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {\n write!(f, \"VerifyingKey({:?}), {