i want to get the certificate’s public key and print as a bigint,so i write the rust code to get this:
use std::fs::File;
use std::io::Read;
use num_bigint::{BigInt, BigUint, ToBigInt, ToBigUint};
use openssl::bn::{BigNum, BigNumContext};
use openssl::x509::X509;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut file = File::open("ca.crt")?;
let mut cert_buffer = Vec::new();
file.read_to_end(&mut cert_buffer)?;
let cert = X509::from_pem(&cert_buffer)?;
let mut signature_bytes = cert.signature().as_slice();
println!("获取证书签名密文 x");
println!("{}", BigInt::from_signed_bytes_be(&mut signature_bytes));
println!("获取证书签名密文 x: {}", BigInt::from_signed_bytes_be(&mut signature_bytes));
Ok(())
}
but after a lot of testing, i find the println result is diffrent.The first result is right,it’s makes me feel confused.Can you tell me why?
as above.
there is my ca.crt content:
-----BEGIN CERTIFICATE-----
MIIE5DCCAsygAwIBAgIVAIngiIbtyo+0uaQdMkalrvRQArj+MA0GCSqGSIb3DQEB
CwUAMBgxFjAUBgNVBAMMDUpldFByb2ZpbGUgQ0EwHhcNMjQwNTEzMDMyMDE2WhcN
MzQwNTAxMDMyMDE2WjAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBMIICIjANBgkq
hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAw0RjOkYEk4WUdInCfAn5tZYzmmc8yiHD
La1Hcm4RoOsCEBSCFF24UFXbTaX1WUgfNkz5XvlKJVHcrRDhG2XgIdUep4lvGrHw
F3gW/jfg9Zqu6YoFVnVkEumxAj0x92kaM52FMROXvQntqRB8zDR+CkKtml2+37ct
NAyvz8K3f7KQx84VKsUVt417E0N+s7onw8OtzgtV9obqj/rDWhNC5uAkHZ8nLcew
ABt+xmdpQ94kzywSzjEZtjfjy1XWUHbzxZVcl087enmk+ww98QAhAwDAqheH98TG
aaU6v1ABfZvYv6zlrggkslBgQFntsJiZGWVA4gbjyr7FDQk6gCxAhF+KP1RUN6D9
GGC6JW5lo85yTeJXIar5mFPtzQOB22R66+hJCQUdC98Oav9t5O3Ks1fvYeJHJmxW
UF3DfC/rE1j6s51hXjvFQw39wdg63Ctw35zCUHK/73IP9AITjF3x7XtjVNka0bOi
K6OdxHzmr9i8xAjTNxSuDOssbC6hsEmKUcdR32vZJKWRXe0Z0F0uNmjZ2Y+NBG1i
kd9q1FXX4jBd5frFWHsyyCtf7CzDVGAqQvASMaHeRlkfF1NMK/GklMIB0XTjjiL3
gNrsfjrV8zVr3lUYAcm/NWuzHyVnLVirtUPyl42CdCXzbPAbz8aNrSDBoCqkn7dk
CUa2j4s3E18CAwEAAaMlMCMwIQYDVR0RBBowGIIWTm92aWNlLWZyb20tMjAyMi0w
Ny0yNTANBgkqhkiG9w0BAQsFAAOCAgEACuYK4yYggfx0WUwhtum0cjmpCNjvyonN
lLtJf/pmg30HnWwLtJBwIOj55yEyUwZey3mWQLN2Xd2lrTL02ChWIWFdB1imShzG
o2TtZV62rS/WP82uicSMILpmEIdTMO/NFKPGQyGwmEYSyYPbzJNeXb7r1nGxZ3a0
qcO1cO/A7RCSk6lUDdzCGQd+XePM9I+RU8AduyYvLElvWMgi5B519Hi3CwYiNzOR
jS/kfL8rg9LMRPFsqvDiFI6ylaLLxQdzKJl/bUCRLAtK+MSq4rwcLSJMDE59lZI7
7A31wMFFrOUgptpq7/8bdsYpNPrAN6HujDXSD5lm3g5OPWNiJgNKPVzYn7hwcSm/
U9IYmoTArgwlsO4LbXk9iaqttYKkmgJxhgPjFJ6yofgqHY+f4UoCm4bJB3aBcc4Q
tZvX1KbK3hD4GLVKhmrYirqOHTXxZ3S8itD9eBBr7BOhegYah8qipgEqwqDb0vk9
YNPYSwILiXI+hHtRb0Z3LWdCdHaiE04YPA1rUtypaNAFJcC5e+jEscffbMmv06hp
8eIvRyLRb4UzxzL0WZodF+Z7xbZ5XPwGrCq0GDQjgR2V9GAxYIVgWAzg9ydBNxit
/w6kYz6EBbRuETE6LW8NYudbU2i1lQWT9+nhc9n+52EDi7vdX2ZRfz2ATarSdTPD
FxDQsvNUYuE=
-----END CERTIFICATE-----
New contributor
欧阳奔 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.