feat: add asn1-der-test
This commit is contained in:
@@ -40,47 +40,52 @@ const BASE64: GeneralPurpose = base64::engine::general_purpose::STANDARD;
|
|||||||
// : }
|
// : }
|
||||||
// : }
|
// : }
|
||||||
// : }
|
// : }
|
||||||
|
|
||||||
|
const PRIVATE_KEY: &str = "749F869FDE0DF3681EBB583FBF5DEF8534E930BEEA0377F6143E1D32E597E806592A1B558636464DDBF778118AAB36B6";
|
||||||
|
const PUBLIC_KEY: &str = "0476BE028B8E201D23A978100CB118AC06049EA901D619BCD9418BC5FD90A9428FA6988B99122AA51F00C690017F7ED16\
|
||||||
|
3E843A0B2FE0CE26CF3E694F44C6B849D4CA819BEFC399EEC8D5D9414FF037AF4EA73FE10AAC591CA631E734B39E3E3F8";
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let ec_public_key = Oid::from_str("1.2.840.10045.2.1").unwrap();
|
let ec_public_key = Oid::from_str("1.2.840.10045.2.1").unwrap();
|
||||||
let secp_384_r1 = Oid::from_str("1.3.132.0.34").unwrap();
|
let secp_384_r1 = Oid::from_str("1.3.132.0.34").unwrap();
|
||||||
let mut v = Vec::new();
|
|
||||||
ec_public_key.write_der(&mut v).unwrap();
|
|
||||||
secp_384_r1.write_der(&mut v).unwrap();
|
|
||||||
let seq = Sequence::new(v.into());
|
|
||||||
|
|
||||||
let hex1 = hex::decode("749F869FDE0DF3681EBB583FBF5DEF8534E930BEEA0377F6143E1D32E597E806592A1B558636464DDBF778118AAB36B6").unwrap();
|
let private_key_oid_seq = {
|
||||||
let hex2 = hex::decode("0476BE028B8E201D23A978100CB118AC06049EA901D619BCD9418BC5FD90A9428FA6988B99122AA51F00C690017F7ED163E843A0B2FE0CE26CF3E694F44C6B849D4CA819BEFC399EEC8D5D9414FF037AF4EA73FE10AAC591CA631E734B39E3E3F8").unwrap();
|
let mut private_key_oid = Vec::new();
|
||||||
let seq3 = {
|
ec_public_key.write_der(&mut private_key_oid).unwrap();
|
||||||
let i1 = Integer::from_i8(1);
|
secp_384_r1.write_der(&mut private_key_oid).unwrap();
|
||||||
let oct = OctetString::new(&hex1);
|
Sequence::new(private_key_oid.into())
|
||||||
|
};
|
||||||
|
|
||||||
let bit = BitString::new(0, &hex2);
|
let private_body_seq = {
|
||||||
// let mut vb = Vec::new();
|
let private_key = hex::decode(PRIVATE_KEY).unwrap();
|
||||||
// bit.write_der(&mut vb).unwrap();
|
let public_key = hex::decode(PUBLIC_KEY).unwrap();
|
||||||
// let set = Set::new(vb.into());
|
|
||||||
|
|
||||||
let mut vv = Vec::new();
|
let integer_1 = Integer::from_i8(1);
|
||||||
i1.write_der(&mut vv).unwrap();
|
let private_key_oct = OctetString::new(&private_key);
|
||||||
oct.write_der(&mut vv).unwrap();
|
|
||||||
|
let mut private_body = Vec::new();
|
||||||
|
integer_1.write_der(&mut private_body).unwrap();
|
||||||
|
private_key_oct.write_der(&mut private_body).unwrap();
|
||||||
|
|
||||||
type TaggedValueContextSpecific<'a> = TaggedValue<BitString<'a>, Error, Explicit, { Class::CONTEXT_SPECIFIC }, 1>;
|
type TaggedValueContextSpecific<'a> = TaggedValue<BitString<'a>, Error, Explicit, { Class::CONTEXT_SPECIFIC }, 1>;
|
||||||
let tag = TaggedValueContextSpecific::explicit(bit);
|
let public_key_bit = BitString::new(0, &public_key);
|
||||||
tag.write_der(&mut vv).unwrap();
|
let public_key_tag = TaggedValueContextSpecific::explicit(public_key_bit);
|
||||||
|
public_key_tag.write_der(&mut private_body).unwrap();
|
||||||
|
|
||||||
Sequence::new(vv.into())
|
Sequence::new(private_body.into())
|
||||||
};
|
};
|
||||||
let btss = seq3.to_der_vec().unwrap();
|
let private_body = private_body_seq.to_der_vec().unwrap();
|
||||||
let bts = OctetString::new(&btss);
|
let private_body_oct = OctetString::new(&private_body);
|
||||||
|
|
||||||
let mut vp = Vec::new();
|
let private_key_info_seq = {
|
||||||
let i0 = Integer::from_i8(0);
|
let mut private_key_info = Vec::new();
|
||||||
i0.write_der(&mut vp).unwrap();
|
let integer_0 = Integer::from_i8(0);
|
||||||
seq.write_der(&mut vp).unwrap();
|
integer_0.write_der(&mut private_key_info).unwrap();
|
||||||
bts.write_der(&mut vp).unwrap();
|
private_key_oid_seq.write_der(&mut private_key_info).unwrap();
|
||||||
|
private_body_oct.write_der(&mut private_key_info).unwrap();
|
||||||
|
Sequence::new(private_key_info.into())
|
||||||
|
};
|
||||||
|
|
||||||
let seqlast = Sequence::new(vp.into());
|
println!("BASED64:\n{}", BASE64.encode(private_key_info_seq.to_der_vec().unwrap()));
|
||||||
|
println!("HEX:\n{}", hex::encode(private_key_info_seq.to_der_vec().unwrap()));
|
||||||
|
|
||||||
println!("BASED64:\n{}", BASE64.encode(seqlast.to_der_vec().unwrap()));
|
|
||||||
println!("HEX:\n{}", hex::encode(seqlast.to_der_vec().unwrap()));
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user