Diff

Differences From Artifact [8d7af4c409]:

To Artifact [e1aafa1002]:


801
802
803
804
805
806
807



808
809
810
811
812
813
814
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817







+
+
+







    }

    /* Make sure to operate on the topmost channel */
    chan = Tcl_GetTopChannel(chan);

    /* Configure channel */
    Tcl_SetChannelOption(interp, chan, "-translation", "binary");
    if (Tcl_GetChannelBufferSize(chan) < EVP_MAX_BLOCK_LENGTH) {
	Tcl_SetChannelBufferSize(chan, EVP_MAX_BLOCK_LENGTH);
    }

    /* Create state data structure */
    if ((statePtr = EncryptStateNew(interp, type)) == NULL) {
	Tcl_AppendResult(interp, "Memory allocation error", (char *) NULL);
	return TCL_ERROR;
    }
    statePtr->self = chan;
823
824
825
826
827
828
829


830
831

832
833
834
835
836
837
838
826
827
828
829
830
831
832
833
834
835

836
837
838
839
840
841
842
843







+
+

-
+







    /* Stack channel */
    statePtr->self = Tcl_StackChannel(interp, &encryptChannelType, (ClientData) statePtr, mode, chan);
    if (statePtr->self == (Tcl_Channel) NULL) {
	EncryptStateFree(statePtr);
	return TCL_ERROR;
    }

    dprintf("Created channel named %s", Tcl_GetChannelName(statePtr->self));

    /* Set result to channel Id */
    Tcl_SetResult(interp, (char *) Tcl_GetChannelName(chan), TCL_VOLATILE);
    Tcl_SetResult(interp, (char *) Tcl_GetChannelName(statePtr->self), TCL_VOLATILE);
    return TCL_OK;
}

/*
 *----------------------------------------------------------------------
 *
 * Unstack Channel --