| 627 | } |
| 628 | |
| 629 | void |
| 630 | crypto_copydata(struct cryptop *crp, int off, int size, void *dst) |
| 631 | { |
| 632 | |
| 633 | switch (crp->crp_buf.cb_type) { |
| 634 | case CRYPTO_BUF_MBUF: |
| 635 | m_copydata(crp->crp_buf.cb_mbuf, off, size, dst); |
| 636 | break; |
| 637 | #if CRYPTO_MAY_HAVE_VMPAGE |
| 638 | case CRYPTO_BUF_VMPAGE: |
| 639 | MPASS(size <= crp->crp_buf.cb_vm_page_len); |
| 640 | MPASS(size + off <= crp->crp_buf.cb_vm_page_len + |
| 641 | crp->crp_buf.cb_vm_page_offset); |
| 642 | cvm_page_copydata(crp->crp_buf.cb_vm_page, |
| 643 | off + crp->crp_buf.cb_vm_page_offset, size, dst); |
| 644 | break; |
| 645 | #endif /* CRYPTO_MAY_HAVE_VMPAGE */ |
| 646 | case CRYPTO_BUF_UIO: |
| 647 | cuio_copydata(crp->crp_buf.cb_uio, off, size, dst); |
| 648 | break; |
| 649 | case CRYPTO_BUF_CONTIG: |
| 650 | MPASS(off + size <= crp->crp_buf.cb_buf_len); |
| 651 | bcopy(crp->crp_buf.cb_buf + off, dst, size); |
| 652 | break; |
| 653 | default: |
| 654 | #ifdef INVARIANTS |
| 655 | panic("invalid crp buf type %d", crp->crp_buf.cb_type); |
| 656 | #endif |
| 657 | break; |
| 658 | } |
| 659 | } |
| 660 | |
| 661 | int |
| 662 | crypto_apply_buf(struct crypto_buffer *cb, int off, int len, |
no test coverage detected