private static SubjectPublicKeyInfo EncodePublicKey(GostKeyExchangeParameters 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 = new GostR34102001PublicKeyParameters { PublicKeyParamSet = Asn1ObjectIdentifier.FromOidString(transportParameters.PublicKeyParamSet), DigestParamSet = Asn1ObjectIdentifier.FromOidString(transportParameters.DigestParamSet), EncryptionParamSet = CreateEncryptionParamSet(transportParameters.EncryptionParamSet) }; asnEncoder.Reset(); publicKeyParams.Encode(asnEncoder); var publicKeyAlgOid = new Asn1ObjectIdentifier(GostR34102001Constants.IdGostR34102001); publicKeyInfo.Algorithm = new AlgorithmIdentifier(publicKeyAlgOid, new Asn1OpenType(asnEncoder.MsgCopy)); return(publicKeyInfo); }
public byte[] EncodeParameters() { byte[] data; var publicKeyParameters = new GostR34102001PublicKeyParameters(); publicKeyParameters.DigestParamSet = Asn1ObjectIdentifier.FromOidString(DigestParamSet); publicKeyParameters.PublicKeyParamSet = Asn1ObjectIdentifier.FromOidString(PublicKeyParamSet); publicKeyParameters.EncryptionParamSet = CreateEncryptionParamSet(EncryptionParamSet); var asnEncoder = new Asn1BerEncodeBuffer(); publicKeyParameters.Encode(asnEncoder); data = asnEncoder.MsgCopy; return(data); }
public byte[] EncodeParameters() { byte[] data; var publicKeyParameters = new GostR34102001PublicKeyParameters(); try { publicKeyParameters.DigestParamSet = Asn1ObjectIdentifier.FromOidString(DigestParamSet); publicKeyParameters.PublicKeyParamSet = Asn1ObjectIdentifier.FromOidString(PublicKeyParamSet); publicKeyParameters.EncryptionParamSet = CreateEncryptionParamSet(EncryptionParamSet); var asnEncoder = new Asn1BerEncodeBuffer(); publicKeyParameters.Encode(asnEncoder); data = asnEncoder.MsgCopy; } catch (Exception exception) { throw ExceptionUtility.CryptographicException(exception, Resources.Asn1EncodeError, typeof(GostR34102001PublicKeyParameters).FullName); } return(data); }