private SubjectPublicKeyInfo EncodePublicKey(Gost_R3410_KeyExchangeParams transportParameters) { var asnEncoder = new Asn1BerEncodeBuffer(); var publicKey = new Asn1OctetString(transportParameters.PublicKey); publicKey.Encode(asnEncoder); var publicKeyValue = asnEncoder.MsgCopy; var publicKeyInfo = new SubjectPublicKeyInfo { SubjectPublicKey = new Asn1BitString(publicKeyValue.Length * 8, publicKeyValue) }; var publicKeyParams = CreatePublicKeyParams(); publicKeyParams.PublicKeyParamSet = new Asn1ObjectIdentifier(OidValue.FromString(transportParameters.PublicKeyParamSet)); publicKeyParams.DigestParamSet = new Asn1ObjectIdentifier(OidValue.FromString(transportParameters.DigestParamSet)); publicKeyParams.EncryptionParamSet = Gost_28147_89_ParamSet.FromString(transportParameters.EncryptionParamSet); asnEncoder.Reset(); publicKeyParams.Encode(asnEncoder); var publicKeyAlgOid = new Asn1ObjectIdentifier(KeyAlgorithm); publicKeyInfo.Algorithm = new AlgorithmIdentifier(publicKeyAlgOid, new Asn1OpenType(asnEncoder.MsgCopy)); return(publicKeyInfo); }
public override void Decode(Asn1BerDecodeBuffer buffer, bool explicitTagging, int implicitLength) { var len = explicitTagging ? MatchTag(buffer, Tag) : implicitLength; OidValue = OidValue.FromArray(buffer.DecodeRelOidContents(len)); buffer.TypeCode = RelativeOidTypeCode; }
public override void Decode(Asn1BerDecodeBuffer buffer, bool explicitTagging, int implicitLength) { var len = explicitTagging ? MatchTag(buffer, Tag) : implicitLength; if (len <= 0) { throw ExceptionUtility.CryptographicException(Resources.Asn1InvalidLengthException); } OidValue = OidValue.FromArray(buffer.DecodeOidContents(len)); buffer.TypeCode = ObjectIdentifierTypeCode; }
public void VerifyWriteObjectIdentifier_ConstructedIgnored(AsnEncodingRules ruleSet) { AsnWriter writer = new AsnWriter(ruleSet); const string OidValue = "1.1"; Asn1Tag constructedOid = new Asn1Tag(UniversalTagNumber.ObjectIdentifier, isConstructed: true); Asn1Tag constructedContext0 = new Asn1Tag(TagClass.ContextSpecific, 0, isConstructed: true); writer.WriteObjectIdentifier(OidValue, constructedOid); writer.WriteObjectIdentifier(OidValue, constructedContext0); writer.WriteObjectIdentifier(OidValue.AsSpan(), constructedOid); writer.WriteObjectIdentifier(OidValue.AsSpan(), constructedContext0); Verify(writer, "060129800129060129800129"); }
public void VerifyWriteObjectIdentifier_ConstructedIgnored(PublicEncodingRules ruleSet) { using (AsnWriter writer = new AsnWriter((AsnEncodingRules)ruleSet)) { const string OidValue = "1.1"; Asn1Tag constructedOid = new Asn1Tag(UniversalTagNumber.ObjectIdentifier, isConstructed: true); Asn1Tag constructedContext0 = new Asn1Tag(TagClass.ContextSpecific, 0, isConstructed: true); writer.WriteObjectIdentifier(constructedOid, OidValue); writer.WriteObjectIdentifier(constructedContext0, OidValue); writer.WriteObjectIdentifier(constructedOid, OidValue.AsSpan()); writer.WriteObjectIdentifier(constructedContext0, OidValue.AsSpan()); writer.WriteObjectIdentifier(constructedOid, new Oid(OidValue, OidValue)); writer.WriteObjectIdentifier(constructedContext0, new Oid(OidValue, OidValue)); Verify(writer, "060129800129060129800129060129800129"); } }
/// <summary> /// Зашифровать параметры. /// </summary> public byte[] EncodeParameters() { byte[] data; try { var publicKeyParams = CreatePublicKeyParams(); publicKeyParams.DigestParamSet = new Asn1ObjectIdentifier(OidValue.FromString(DigestParamSet)); publicKeyParams.PublicKeyParamSet = new Asn1ObjectIdentifier(OidValue.FromString(PublicKeyParamSet)); publicKeyParams.EncryptionParamSet = Gost_28147_89_ParamSet.FromString(EncryptionParamSet); var asnEncoder = new Asn1BerEncodeBuffer(); publicKeyParams.Encode(asnEncoder); data = asnEncoder.MsgCopy; } catch (Exception exception) { throw ExceptionUtility.CryptographicException(exception, Resources.Asn1EncodeError, nameof(Gost_R3410_PublicKeyParams)); } return(data); }
public Asn1RelativeOid(OidValue oidValue) : base(oidValue) { }
public static Gost_28147_89_ParamSet FromString(string value) { return((value != null) ? new Gost_28147_89_ParamSet(OidValue.FromString(value)) : null); }
public Gost_28147_89_ParamSet(OidValue oidValue) : base(oidValue) { }
public Asn1ObjectIdentifier(OidValue oidValue) { OidValue = oidValue; }
public Asn1ObjectIdentifier() { OidValue = null; }